在Python中,`pip -r requirements.txt`不会递归地安装包*?

时间:2016-05-06 02:59:53

标签: python python-3.x pip cython

我使用的是Python 3.5.1和pip 7.1.2:

pysam>=0.9.0

在我的requirements.txt中,我写道:

pip3

然后我使用pip3 install -U -r requirements.txt 来安装这个requirements.txt文件,如下所示:

pysam

cython有自己的依赖关系:pip3 install -U -r requirements.txt,可在以下位置查看:https://github.com/pysam-developers/pysam/blob/master/requirements.txt

但是,使用pysam似乎不会递归地安装ValueError: no cython installed的依赖项,它会抛出requirements.txt的预期。

有没有人知道为什么{{1}}没有安装递归

1 个答案:

答案 0 :(得分:3)

pysam setup.py脚本似乎使用requires而不是典型的install_requires;后者生成pip需要的元数据以确定其要求。事实上,pysam似乎需要cython来构建自己,所以更恰当的是,它应该使用setup_requires。如果没有安装cython,可以检查安装pysam是否正常运行。

(编辑:不工作) 无论如何,你可以通过在你的需求文件中放置pysam之前的cython来解决这个问题。这样,pip会在它移动到pysam之前尝试安装cython:

cython>=0.22
pysam>=0.9.0

修改:要清楚,这与pip -r requirements.txt本身无关。这是因为pip没有从pysam接收到足够的元数据,因此在尝试安装pysam之前需要先安装cython。

第二次修改:你是对的。安装仍然失败,因为pip在进入构建阶段之前尝试从pysam安装脚本获取元数据,并且如果未安装cython,则pysam安装脚本会抛出该错误。在这个特定的情况下,我不确定除了事先在单独的命令中安装Cython之外还有一个解决方案。