情况:
在用 Pycharm 开发一个 python3 项目时,我在“项目解释器”设置下看到了安装包管理器的选项。我心不在焉地点击了它,然后立刻意识到自己给自己带来了灾难。
我假设我单击的选项是安装 python3 的 PIP,因为从我的终端我无法正确使用 PIP。使用 pip 命令执行任何操作都会得到以下输出:
$ pip install lxml
Traceback (most recent call last):
File "/usr/local/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
File "/usr/local/lib/python3.4/dist-packages/setuptools-5.7-py3.4.egg/pkg_resources.py", line 356, in load_entry_point
File "/usr/local/lib/python3.4/dist-packages/setuptools-5.7-py3.4.egg/pkg_resources.py", line 2472, in load_entry_point
try:
File "/usr/local/lib/python3.4/dist-packages/setuptools-5.7-py3.4.egg/pkg_resources.py", line 2186, in load
self.py_version = py_version
ImportError: No module named 'pip'
我以为 PIP 丢失了,所以我尝试删除并重新添加 ubuntu 包python-pip
,我尝试运行python get-pip.py
但报告 PIP 已安装。
过了一会儿,我发现 python27 仍然安装了 PIP,但没有为 python34 安装。(据我所知)这是应该预料到的,可以防止我现在遇到的确切问题,但是,无论 Pycharm 做了什么,似乎都改变了我的终端中的默认行为,以在 python34 中查找 PIP,尽管我的默认 python 仍然是 python27(通过运行验证python --version
)。
我为 python34 重新安装了 PIP,这使我能够再次安装包,但我不想要这种行为。
问题:
我该如何重置所有内容,以便可以安全地卸载 python34 的 PIP,并将默认 PIP 恢复为 python27 版本?
(在我清理完所有东西之后,我将开始使用virtualenv
。今天在尝试解决这个问题时,我才意识到它的存在。)
答案1
在 pycharm 上将 python 解释器从 2.7 切换到 3.4 时,它安装了 setuptools-5.7,这可能破坏了我的 pip。我通过重命名 setuptools 文件并安装 python3 pip 解决了这个问题。我的 pip 现在又可以正常工作了。
cd /usr/local/lib/python3.4/dist-packages sudo mv setuptools-5.7-py3.4.egg setuptools-5.7-py3.4.egg.moved sudo mv setuptools-5.7-py3.4.egg setuptools-5.7-py3.4.egg.moved sudo apt-get install python3-pip
答案2
解决方案
从昨天开始,我在 Google 上搜索答案,却发现无法设置默认 pip。我决定仔细检查并删除所有我能找到的 pip 实例。
sudo -H pip3 uninstall pip
sudo -H pip2 uninstall pip
sudo apt-get purge -y python-pip
# It should be noted, 'python-pip' is the ubuntu package for pip2, but
# there is also another ubuntu package for pip3. I didn't have it, but you may.
在此之后,我通过重新安装了pip sudo -H python get-pip.py
,一切似乎又正常了。pip3
由于未安装而失败,pip2
确认安装了正确的pip,并且(最重要的是)运行起来pip
就像它应该的那样。
向我学习。使用virtualenv
和virtualenvwrapper
。