ale*_*pov 2 python pip virtualenv python-2.7
我正在为一个使用Python的客户开发一个DevOps项目.虽然我从来没有专业地使用它,但我知道一些事情,比如使用virtualenv和pip - 虽然不是很详细.
当我查看我试图为运行功能测试套件准备的分段盒时,我看到了混乱.全局安装了大量的软件包,以及安装在与项目的requirements.txt不匹配的virtualenv中的软件包.好吧,我想,有很多清理工作.从全局包开始.
但是,我立即遇到了一个问题:
? ~ pip uninstall PyYAML
Not uninstalling PyYAML at /usr/lib/python2.7/dist-packages, owned by OS
Run Code Online (Sandbox Code Playgroud)
好吧,有人必须做了'sudo pip install PyYAML'.我想我知道如何解决它:
? ~ sudo pip uninstall PyYAML
Not uninstalling PyYAML at /usr/lib/python2.7/dist-packages, owned by OS
Run Code Online (Sandbox Code Playgroud)
呃,显然我没有.搜索显示用户安装绕过pip的软件包引起了一些类似的冲突,但我不相信 - 为什么会知道它们,如果是这样的话?除非"其他"方式将它们放在同一位置,否则pip会使用 - 但如果是这样的话,为什么在sudo下无法卸载呢?
重点不在于pip无法安装软件包,因为您没有足够的权限,但因为它不是通过安装的软件包pip,所以它不想卸载它.
dist-packages是OS程序包管理器安装的程序包所在的位置; 因为它们是由另一个包管理器处理的(例如apt在Ubuntu/Debian上,pacman在Arch上,rpm/ yum在CentOS上,......)pip不会触及它们(但仍然必须知道它们,因为它们是已安装的包,因此可以使用它们满足 - 已pip安装包的依赖关系).
你也应该避免触摸它们,除非你使用正确的包管理器,即便如此,它们可能已经被自动安装以满足某些程序的依赖性,所以你可能不会在不破坏它们的情况下删除它们.这通常可以很容易地检查,但具体方法取决于您使用的精确Linux发行版.
Pip拒绝卸载这些软件包,因为Debian开发人员修补了它的行为.这允许您同时使用pip和apt同时使用."原始"点子程序没有这样的功能
更新:我的回答仅与旧版本的Pip相关.对于最新版本,Pip配置为仅修改仅驻留在其"主目录"中的文件 - 即/usr/local/lib/python3.*Debian.对于最新的工具,当您尝试删除包时,您将收到以下错误apt:
For pip 9.0.1-2.3~ubuntu1(从Ubuntu存储库安装):
Not uninstalling pyyaml at /usr/lib/python3/dist-packages, outside environment /usr
Run Code Online (Sandbox Code Playgroud)
对于pip 10.0.1(原始,从pypi.org安装):
Cannot uninstall 'PyYAML'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |