Python 检查是否已在';可编辑';(鸡蛋链接)模式或不?

Python 检查是否已在';可编辑';(鸡蛋链接)模式或不?,python,pip,setuptools,python-packaging,Python,Pip,Setuptools,Python Packaging,有没有办法检查Python包是否已正常安装(pip-install/setup.py-install)或处于可编辑/egg链接模式(pip-install-e/setup.py-develop) 我知道我可以检查包的路径是否包含站点包,这很可能意味着它是一个“不可编辑”的安装,但这感觉非常脏,我宁愿避免这样做 我尝试检查这一点的原因是我的应用程序正在检查不同位置的配置文件,例如/etc/myapp.conf和~/.myapp.conf。对于开发人员,我想签入/myapp.conf,但由于我在没

有没有办法检查Python包是否已正常安装(
pip-install
/
setup.py-install
)或处于可编辑/egg链接模式(
pip-install-e
/
setup.py-develop

我知道我可以检查包的路径是否包含
站点包
,这很可能意味着它是一个“不可编辑”的安装,但这感觉非常脏,我宁愿避免这样做


我尝试检查这一点的原因是我的应用程序正在检查不同位置的配置文件,例如
/etc/myapp.conf
~/.myapp.conf
。对于开发人员,我想签入
/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授权的,所以复制和粘贴到几乎任何项目中都应该是安全的。

你知道如果一个
pip安装-e,如何从内部
setup.py
正在进行吗?@nmz787可能有点脆弱,但是你可以尝试检查
sys.argv
并寻找
-e
。大多数情况下都可以工作,但如果
-e
在需求文件中指定。