pip:安装依赖项的依赖项

Nic*_*mer 3 python dependencies pip

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

$ cat requirements.txt
meshio
numpy
Run Code Online (Sandbox Code Playgroud)

跑步时

$ pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

可以正确安装这两个软件包,但我注意到meshio的依赖项不是(即,它中列出的任何东西requirements.txt)。不足为奇,点子应该怎么知道?

有没有一种机制可以通过pip安装整个依赖关系树?

Kna*_*nak 5

您可能对pip-tools感兴趣,pip-tools是一个python软件包,可用于构建requirements.txt考虑所有基础依赖关系的文件。可以通过pip安装:

pip install --upgrade pip  # pip-tools needs pip>=6.
pip install pip-tools
Run Code Online (Sandbox Code Playgroud)

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

将以下行写入文件:

Flask
Run Code Online (Sandbox Code Playgroud)

运行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
Run Code Online (Sandbox Code Playgroud)


Nic*_*mer 5

事实证明要安装依赖项,软件包需要列出其依赖项为

install_requires=[
    'numpy',
    'pyyaml'
    ],
Run Code Online (Sandbox Code Playgroud)

作为setup()in的一部分setup.py,而不是in requirements.txt