2011-06-23 143 views
16

我使用的命令皮普安裝-r繼續失敗

pip install -r requirements.txt 

有時它沒有安裝軟件包無論出於何種原因安裝與PIP-Python包的列表,過去安裝。即使出現這些故障,是否有可能繼續使用下一個軟件包?

回答

10

你可以寫一個小包裝腳本調用反覆點子,是這樣的:

#!/usr/bin/env python 
""" 
pipreqs.py: run ``pip install`` iteratively over a requirements file. 
""" 
def main(argv): 
    try: 
     filename = argv.pop(0) 
    except IndexError: 
     print("usage: pipreqs.py REQ_FILE [PIP_ARGS]") 
    else: 
     import pip 
     retcode = 0 
     with open(filename, 'r') as f: 
      for line in f: 
       pipcode = pip.main(['install', line.strip()] + argv) 
       retcode = retcode or pipcode 
     return retcode 
if __name__ == '__main__': 
    import sys 
    sys.exit(main(sys.argv[1:])) 

,你可以調用像pipreqs.py requirements.txt --some --other --pip --args

請注意,這隻適用於「繼續儘管失敗」的座右銘深度---如果pip無法安裝列出的某項子要求,那麼當然父要求仍然會失敗。

+0

謝謝,這似乎工作。儘管如此,還是有一個令人討厭的副作用:來自pip的日誌消息似乎重複(並且一式三份等),在需求文件中列出的軟件包越多。這可能是一個記錄器實例化問題。 – dangonfast

25

我有同樣的問題。 繼續上@格雷格哈斯金斯線,也許這個慶典一行代碼更加簡潔:

cat requirements.txt | while read PACKAGE; do pip install "$PACKAGE"; done 

# TODO: extend to make the script print a list of failed installs, 
# so we can retry them. 

(對於非shellscripters:調用pip install每個列出的軟件包)的

相同注意關於失效的失敗在這裏適用!