2017-03-08 16 views

回答

1

根據來自Rob答案,我來到了以下解決方案:

def satisfy_dependencies(path_to_dir): 
    # Generate requirements.txt using pipreqs and then use pip to fetch the requirements 
    proc = Popen(["pipreqs", path_to_dir, "--savepath", os.path.join(path_to_dir, "requirements.txt"), "--force"]) 

    while proc.poll() is None: 
     time.sleep(0.1) 

    if os.path.exists(os.path.join(path_to_dir, "requirements.txt")): 
     pip = Popen(["pip", "install", "-r", os.path.join(path_to_dir, "requirements.txt")]) 

     while pip.poll() is None: 
      time.sleep(0.1) 

     os.remove(os.path.join(path_to_dir, "requirements.txt")) 

很多子處理,但在我的情況做了這項工作。 我會回來的。

2

有跡象表明,我所知道的兩個選項。

  1. pigar
  2. pipreqs

雙方將拉在你的項目進口,給你,你可以用PIP使用requirements.txt文件。

2

你可以用try/except條件包裝它。

類似:

import pip 

while True: 
    try: 
     import mymodule 
     break 
    except ImportError as e: 
     dependency = str(e).split(" ")[-1] 
     if dependency == 'mymodule': 
      break 
     pip.main(['install', dependency]) 

我的想法:

  1. 嘗試導入 - 如果你沒有安裝,如果失敗,則應該增加一個ImportError

  2. 的依賴錯誤消息的最後一個單詞應該是您需要的模塊的名稱,請按照您鏈接的頁面中的建議使用pip進行安裝。

  3. 你也可以,如果你的模塊不存在得到一個ImportError - 所以我們的測試是,打破

我能想象一個問題,這取決於PIP模塊(我卻沒有使用)如果一個模塊有不同的導入名點子的名稱,例如MySQLdb的,這是通過$安裝PIP安裝MySQL-python的

相關問題