删除符号链接并不会从相应的虚拟环境中清除一个软件包。

3

我刚通过setuptools建立了一个示例项目。setup.py文件如下:

from setuptools import setup

setup(
    name='test_project',
    version='0.1',
    packages=['test_project'],
    zip_safe=False
)

我通过python setup.py develop命令将该软件包添加到了虚拟环境中,它会在虚拟环境中创建一个相应的符号链接:./lib/python2.7/site-packages/test-project.egg-link

我想要删除该软件包,认为只需从虚拟环境中删除符号链接即可。但是,在删除符号链接后,运行python -c "import test_project"仍然成功。是否还需要删除其他缓存文件?

(如果有必要,我使用了--system-site-packages选项来创建虚拟环境;该软件包未被系统全局安装,即在虚拟环境外运行python -c "import test_project"会失败。)

(我在Python 2和Python 3下都遇到了这个问题。)


pip uninstall . 不就是你想要的吗? - karlson
是的,pip uninstall 确实起到了作用。很可能是由于您在答案中提到的原因。谢谢! - a_guest
2个回答

4
你需要从你的site-packages中的easy-install.pth文件中移除你的包。在你的情况下应该是./lib/python2.7/site-packages/easy-install.pth。
我发现使用pip从项目目录中用pip install -e .(或者从任何地方用pip install -e [projectpath])安装开发版python包更为方便。以这种方式安装的包可以轻松地通过pip uninstall [packagename]进行删除。

easy-install.pth 中删除成功了!虽然我是通过 setup.py 安装的包,但我也可以使用 pip uninstall - a_guest
@karlson 我错误地使用 python3 -m pip install -e . 安装了一个模块,尝试了所有可能的解决方案都没有成功。最后,感谢您的答案,该软件包已成功删除。 - Yushan ZHANG
很高兴听到这个好消息 :) - karlson

0
对我有用的解决方案。 它将在运行pip install -e .的目录中创建一个.egg-info文件。 转到该目录并删除.egg-info文件。 然后使用pip list进行交叉检查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接