5

有什么方法可以检查 Python 包是否已正常安装(pip install/ setup.py install)或可编辑/鸡蛋链接模式(pip install -e/ setup.py develop)?

我知道我可以检查包的路径是否包含site-packages很可能意味着它是“不可编辑”的安装,但这感觉非常肮脏,我宁愿避免这种情况。


我试图检查这一点的原因是我的应用程序正在检查各个地方的配置文件,例如/etc/myapp.conf~/.myapp.conf. 对于开发人员我想签入,<pkgdir>/myapp.conf但由于我显示了可能的位置列表以防找不到配置,所以我真的不想在软件包安装到站点包时包含 pkgdir 选项(因为用户应该不要在那里创建配置文件)。

4

1 回答 1

2

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 许可的,因此可以安全地复制和粘贴到几乎任何项目中。

于 2017-03-03T15:59:11.073 回答