2016-04-27 297 views
2

我想手动安装我正在编写的一个Python包的所有需求。为此,我通过线创建的文件requirements.txt并添加依赖关系,行:pip:安装依赖的依赖关系

$ cat requirements.txt 
meshio 
numpy 

当运行

$ pip install -r requirements.txt 

这两个包好了安装,但我注意到,meshio的依赖AREN (即无论在requirements.txt中列出)。毫不奇怪,pip应该怎么知道?

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

回答

2

原来的要安装的依赖关系,包需要列出其依赖

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

setup()部分setup.py,而不是在requirements.txt

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

4

您可能感兴趣的pip-tools,可用于构建requirements.txt文件,该文件考虑到了所有的基础依赖Python包。它可以通过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