【问题标题】:Pip install scikit-image using locally installed dependency使用本地安装的依赖项 Pip install scikit-image
【发布时间】:2017-07-07 10:54:51
【问题描述】:

我正在尝试在我没有管理员权限的服务器上安装 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 版本?

【问题讨论】:

  • 当我使用 pip install --user --upgrade Cython 将 Cython 安装到我的 $HOME 目录时,我也遇到了同样的问题
  • 你试过 pip install --user cython 吗?
  • 我做到了,只是意识到我需要将 ~/.local/bin 添加到我的 PATH 中。我现在可以运行 cython --version 并获得 Cython 0.25.2,但 scikit-image 的用户安装仍然不满意并且给了我相同的版本控制错误。
  • 所以我已经完成了export PYTHONPATH=~/.local/lib/python2.7/site-packages:$PYTHONPATH,但是特定于集群的 Cython 安装首先出现在 Python 的 sys.path 中。无论如何让我的站点包显示在sys.path 的顶部?
  • 如果你查看源代码,添加上述路径,然后尝试python setup.py build_ext --inplace,你会看到同样的错误吗?

标签: python dependencies cython scikit-image


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-11-20
    • 2016-08-21
    • 2021-04-11
    • 2023-04-03
    • 2016-12-01
    • 2019-04-29
    • 2020-09-21
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多