Pip使用本地安装的依赖关系安装scikit-image

问题描述:

我试图在没有管理权限的服务器上安装scikit-image。 Scikit-image需要Cython> = 0.23作为依赖项,但服务器已在全局安装了Cython 0.21。Pip使用本地安装的依赖关系安装scikit-image

$ which Cython 
/opt/apps/software/MPI/GCC/4.8.3/OpenMPI/1.8.8/Python/2.7.9/bin/cython 

$ cython --version 
Cython version 0.21.2 

我可以安装用Cython 0.25.2本地转化为自己的项目中将该.pip文件夹(以下建议here):

$ pip install Cython -t .pip 
$ python ./.pip/cython.py --version 
Cython version 0.25.2 

我添加./.pip我PYTHONPATH的开始,但当我尝试安装scikit像我得到

$ pip install --user scikit-image 
... 
RuntimeError: Cython >= 0.23 needed to build scikit-image 

我怎么能告诉画中画安装使用用Cython的坐在版本210?

+0

当我使用'pip install --user --upgrade Cython'将Cython安装到我的$ HOME目录中时,我也会遇到同样的问题 – alexpghayes

+0

您是否尝试过使用pip install --user cython? –

+0

我做了,只是意识到我需要在我的PATH中添加'〜/ .local/bin'。我现在可以运行'cython --version'并获得'Cython 0.25.2',但用户安装scikit-image仍然不高兴,并且给我相同的版本错误。 – alexpghayes

事实证明,集群模块管理系统正在将Python的老版本Cython添加到Python的sys.path中,其优先级高于我可以添加到我的PYTHONPATH中的任何东西。当我卸载了我一直在使用的Python模块时,群集上的默认版本是2.7.5,它没有pip,所以当模块卸载时我不能安装scikit-image作为用户(另外,没有模块一些依赖关系丢失)。

解决方案是使用virtualenv创建一个环境并在该环境中安装我的包。要运行我的代码,我现在使用/path/to/virtualenv/python my_file

好吧,我现在知道更多关于集群模块系统和Python路径的知识。手指越过这个答案最终对其他人有用。有关Python寻找依赖关系的有趣讨论是here