2017-03-03 82 views
1

有什麼方法可以檢查Python包是否已正常安裝(pip install/setup.py install)或可編輯/ egg-link模式(pip install -e/setup.py develop)?檢查是否在'可編輯'(egg-link)模式下安裝了python軟件包?

我知道我可以檢查包的路徑是否包含site-packages,這很可能意味着它是一個「不可編輯」的安裝,但這種感覺非常髒,我寧願避免這種情況。


我試圖檢查這個的原因是,我的應用程序是檢查在各種場所配置文件,如/etc/myapp.conf~/.myapp.conf。對於開發人員,我想檢查<pkgdir>/myapp.conf,但由於我顯示可能位置的列表以防萬一找不到配置,所以當包已安裝到站點包時,我確實不希望包含pkgdir選項(因爲用戶不應該在那裏創建一個配置文件)。

回答

0

pip爲此包含code(它被pip freeze用作在-e前面的行)。由於pip的API不保證是穩定的,這是最好的代碼從pip複製到自己的應用程序,而不是將其導入的:

def dist_is_editable(dist): 
    """Is distribution an editable install?""" 
    for path_item in sys.path: 
     egg_link = os.path.join(path_item, dist.project_name + '.egg-link') 
     if os.path.isfile(egg_link): 
      return True 
    return False 

的代碼是MIT許可所以它應該是安全的複製&幾乎可以粘貼到任何項目中。