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

时间:2017-02-17 19:30:25

标签: python dependencies cython scikit-image

我正在尝试在我没有管理员权限的服务器上安装scikit-image。 Scikit-image需要Cython> = 0.23作为依赖项,但服务器全局安装了Cython 0.21。

$ 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-image时,我得到了

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

如何告诉pip安装使用my_project/.pip中的Cython版本?

1 个答案:

答案 0 :(得分:1)

事实证明,集群模块管理系统将旧版本的Cython添加到Python的sys.path,其优先级高于我可以添加到PYTHONPATH的任何内容。当我卸载我一直使用的Python模块时,集群上的默认版本是2.7.5,没有pip,因此我无法在模块中安装scikit-image作为用户被卸载(另外,没有模块,缺少许多依赖项)。

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

从好的方面来说,我现在对集群模块系统和Python路径了解得更多。手指越过这个答案最终对其他人有用。有关Python查找依赖项的有趣讨论是here