pip:安装依赖项的依赖项

时间:2016-04-27 13:11:29

标签: python dependencies pip

我想手动安装我正在编写的Python包的所有要求。为此,我创建了文件requirements.txt并逐行添加了依赖项:

$ cat requirements.txt
meshio
numpy

运行时

$ pip install -r requirements.txt

这两个软件包安装正常,但我注意到meshio的依赖关系不是(即,requirements.txt中列出的内容)。不足为奇,pip应该怎么知道呢?

是否存在使用pip安装整个依赖关系树的机制?

3 个答案:

答案 0 :(得分:4)

您可能对pip-tools感兴趣,这是一个python包,可用于构建考虑所有底层依赖项的requirements.txt文件。它可以通过pip安装:

pip install --upgrade pip  # pip-tools needs pip>=6.
pip install pip-tools

安装完成后,您可以使用pip-compile命令生成需求文件。例如,假设您正在使用Flask项目。您必须执行以下操作:

将以下行写入文件:

Flask

运行pip-compile <your-file>。它将生成您的requirements.txt,其中包含所有依赖项。您可以重新运行pip-compile来更新软件包。您的输出文件如下所示:

#
# This file is autogenerated by pip-compile
# Make changes in requirements.in, then run this to update:
#
#    pip-compile <your-file>
#
flask==0.10.1
itsdangerous==0.24        # via flask
jinja2==2.7.3             # via flask
markupsafe==0.23          # via jinja2
werkzeug==0.10.4          # via flask

答案 1 :(得分:3)

事实证明要安装的依赖项,包需要将其依赖项列为

install_requires=[
    'numpy',
    'pyyaml'
    ],

作为setup()setup.py的一部分,而非requirements.txt

答案 2 :(得分:0)

我不确定这是否是你需要的。但这就是我解决这个问题的方法。我为每个python项目创建了一个虚拟环境

cd my_project_folder
virtualenv venv # choose the python interpreter you need ;)
source venv/bin/activate

然后我安装项目所需的所有包。

pip install <what ever packages you need>

如果您需要创建requirements.txt,可以使用此命令

pip freeze > requirements.txt  # including the installed version of each package

要离开虚拟环境,只需输入deactivate即可。希望这有助于你...

这也详细描述了here