2017-03-03 83 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许可所以它应该是安全的复制&几乎可以粘贴到任何项目中。