2016-04-27 294 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