As a Java Developer transitioning into the Python ecosystem, I’ve noticed a difference in how dependencies are handled between the two languages. In Java, project dependencies remain intact and the project builds reliably over time.
However, my experience with Python has shown it to be more fragile in this aspect. For instance, I’ve encountered issues with a Python-based platform that previously worked well before the deprecation of Python 2.7.
curl -Lo bootstrap.sh https://raw.githubusercontent.com/AppScale/gts/master/bootstrap.sh
bash bootstrap.sh
Running this now throws cascading errors.
I had to manually install the Cython module this time, whereas in the past, it was not necessary as the build didn’t fail. The issue now is with the required module ‘pycapnp’ for AppScale, which I have to build myself, but it throws an error.
root@appscale1:~# git clone https://github.com/capnproto/pycapnp.git
root@appscale1:~/pycapnp# pip install .
Processing /root/pycapnp
Complete output from command python setup.py egg_info:
Error compiling Cython file:
------------------------------------------------------------
...
DynamicValue.Reader new_server(InterfaceSchema&, PyObject *)
Capability.Client server_to_client(InterfaceSchema&, PyObject *)
PyPromise convert_to_pypromise(RemotePromise)
PyPromise convert_to_pypromise(VoidPromise)
VoidPromise taskToPromise(Own[PyRefCounter] coroutine, PyObject* callback)
void allowCancellation(CallContext context) except +reraise_kj_exception nogil
^
------------------------------------------------------------
My machine is running Ubuntu 18.04 with Python 2.7 installed.