是否有任何方法可以检查python软件包是否已正常安装(pip install
/setup.py install
)还是以可编辑/Egg-link模式(pip install -e
/setup.py develop
)?
我知道我可以检查包装的路径是否包含site-packages
,这很可能意味着它是"不可用"的安装,但这感觉非常脏,我宁愿避免使用。
我试图检查这一点的原因是我的应用程序正在检查各个地方的配置文件,例如/etc/myapp.conf
和~/.myapp.conf
。对于我想在<pkgdir>/myapp.conf
中签入的开发人员,但是由于我显示了可能的位置列表,但如果找不到配置,我真的不想在安装该软件包时包含PKGDIR选项(因为用户用户不应在其中创建配置文件)。
pip
包含此(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许可的,因此可以安全地将其粘贴到几乎所有项目中。