Pure uplink python

I think a pure uplink written in python will speed up the development of some project. Now we have a wrapper around go. Can you make a bounty like PHP?

1 Like

GitHub - utropicmedia/storj-python: Python bindings for libuplink

1 Like

Not purely programmed with python, wrapper around go

@nerdatwork - just an fyi - this is the one we maintain:



Hi @marcossmith,

Thanks for the suggestion - we’re always glad to get feedback! What aspect of having a pure native language implementation would improve development speed? Currently we’re mapping data types from language-native constructs/primitives to those for libuplink. Happy to get some other suggestions to make things easier.



Hi Karl, thanks for your reply, python is one of the most common uses languages. Development speed would be the same, but when you have a project with multiples OS, simplicity its better.

Its better
pip3 install uplink-python
Install go
export PATH=$PATH:$GOPATH/bin
A proper C/C++ compiler toolchain, like GCC
git clone -b v1.2.2 GitHub - storj/uplink-c: Uplink C library
go build -o libuplinkc.so -buildmode=c-shared

I feel like with a little adjustments that make storj easier to use, this project can fly.

Anyway, great, great work karl.


Hi @marcossmith -

Great feedback - thanks for taking the time to reply. The project was a team effort and we’re excited to keep pushing forward.

Have you tried:

pip install --no-cache-dir uplink-python

We publish to common package indexes. (uplink-python · PyPI) and welcome any feedback.

wrt the architectural approach - we made a decision early-on to build on top of the upstream libuplink from the Storj core engineering team for a few reasons:

  • We get any core protocol improvements from a single upstream codebase
  • We Inherit any compatibility/roadmap policies the core team uses for future growth.(function deprecation, overloading signatures, etc.)

Let me know your thoughts.



edit: we have some doco for the project at Python Dev Documentation for Storj - we’ve been thinking about consolidating the dev documentation. Any suggestions?


Hey everyone,

Just want to echo marcosmith’s request, the go-dependencies don’t currently install very smoothly within the python ecosystem. I just tried to pip3 install uplink-python and it for some reason is asking me for my sudo password. Presumably this is to build some go dependencies? not sure.

I’ve done some packaging of c-libraries before for python libraries in the past and it’s always a hassle (though not impossible).

Perhaps if you didn’t want to make your users grab the entire GOLANG toolchain just to use storj, you can include pre-built libuplinkc.so for the various architectures (amd64 and arm) in your python wrapper. Tensorflow is an example of a library that does this well. That way, your users would just have to worry about getting up and running without figuring out how to obtain the GOLANG toolchain which many are unfamiliar with.

Otherwise, great technology and really amazing stuff you all have put together

1 Like

@cubictoaster - We want to keep the duplication of logic to a minimum. The topic of having prebuilt objects has come up before and we’re not against going that route as it’s likely the optimal balance.

Thanks for the feedback. Let me talk with the crew a bit and see what the consensus is.


Thanks, I totally see the vision you guys are working toward.



3 posts were split to a new topic: Installation of python bindings, and issues on the go-dependency