簡體   English   中英

pip 無法從 requirements.txt 安裝包

[英]pip fails to install packages from requirements.txt

我正在嘗試使用需求文件安裝 python 軟件。

>> cat requirements.txt
Cython==0.15.1
numpy==1.6.1
distribute==0.6.24
logilab-astng==0.23.1logilab-common==0.57.1
netaddr==0.7.6
numexpr==2.0.1
ply==2.5
pycallgraph==0.5.1
pyflowtools==0.3.4.1
pylint==0.25.1
tables==2.3.1
wsgiref==0.1.2

所以我創建了一個虛擬環境

>> mkvirtualenv parser

(parser)
>> pip freeze
distribute==0.6.24
wsgiref==0.1.2

(parser)
>> pip install -r requirements.txt

...然后我打包下載但沒有安裝錯誤: http : //pastie.org/4079800

(parser)
>> pip freeze
distribute==0.6.24
wsgiref==0.1.2

令人驚訝的是,如果我嘗試手動安裝每個包,它們安裝得很好。 例如:

>> pip install numpy==1.6.1

(parser)
>> pip freeze
distribute==0.6.24
wsgiref==0.1.2
numpy==1.6.1

我搞不清楚了。 到底是怎么回事?

PS:我正在使用帶有virtualenvvirtualenvwrapper pip v1.1 和python v2.7.2

看起來numexpr包對 numpy 有安裝時依賴性。 Pip 對您的要求進行了兩次傳遞:首先它下載所有包並運行每個包的setup.py以獲取其元數據,然后在第二次傳遞中安裝它們。

所以,numexpr 在它的 setup.py 中試圖從 numpy 導入,但是當 pip 第一次運行 numexpr 的 setup.py 時,它還沒有安裝 numpy。

這也是為什么你一一安裝包時沒有看到這個錯誤的原因:如果你一次安裝一個,那么在你pip install numexpr之前,numpy會完全安裝在你的環境中。

唯一的解決方案是在運行pip install -r requirements.txt之前安裝pip install numpy —— 您將無法使用單個 requirements.txt 文件在單個命令中執行此操作。

更多信息在這里: https : //github.com/pypa/pip/issues/25

我遇到了類似的問題,結果如下:

cat requirements.txt | sed -e '/^\s*#.*$/d' -e '/^\s*$/d' | xargs -n 1 python -m pip install

這將逐行讀取 requirements.txt 並執行 pip。 我無法從哪里找到正確的答案,因此對此深表歉意,但我在下面找到了一些理由:

  1. sed 的工作原理: https : //howto.lintel.in/truncate-empty-lines-using-sed/
  2. 另一個類似的答案,但使用 git: https : //stackoverflow.com/a/46494462/7127519

希望這有助於替代方案。

這有時很煩人,是 pip 的錯誤。 當您運行 pip install package_name 時,pip 將首先對目標包運行 pip check,並安裝依賴項(目標包)所需的所有包。 但是當你運行 pip install -r requirements.txt 時,pip 會嘗試直接安裝所有需要的包,從上到下一一列出。 有時依賴項列在它所依賴的包之上。

The solution is simple:
1.pip install package_name
2.simply put the error package to the bottom of the requirements.txt
3.sometimes a particular version of the package is not be able to  be installed,just install the newest version of it and update the data in requirements.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM