检查是否在'可编辑'(egg-link)模式下安装了python软件包?
问题描述:
有什么方法可以检查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选项(因为用户不应该在那里创建一个配置文件)。
答
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许可所以它应该是安全的复制&几乎可以粘贴到任何项目中。