因此,经过许多烦恼和心痛之后,我设法将 Ubuntu 12.04 LTS 上的 Python3.2 升级到 Python3.4。我遵循了这个相当简单的方法:
似乎解决了这个问题,运行“python”作为命令会将我带入 Python3.4 shell 而不是旧版本。太好了。
只是现在我遇到了一些问题。我想换到 3.4 的原因是为了获得 Python mysql.connector 的较新版本,即 2.0.0 或更高版本,这需要 3.4。但是在我安装 3.4 之后,我的 easy_install、pip 和 virtualenv(可能还有很多其他的)都坏了,而且看起来似乎是某种版本问题。以下是一些错误输出:
pip
(without typing out the whole thing, heres the last two lines)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==7.1.0
easy_install
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
raise raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: distribute==0.06.24dev-r0
virtualenv
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 584, in resolve
raise raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: virtualenv==13.1.0
有人知道为什么会发生这种情况吗?你能指导我解决吗?
谢谢!
答案1
本教程的结尾是真的不好。内容如下:
rm /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python
这意味着全球的系统 Python 已更改为 3.3。根据我之前的评论,这将造成比破坏您的开发环境更大的损害。Python 2 和 3 不兼容,并且它们具有不同的依赖项位置(也不兼容)。Ubuntu 在系统方面使用了很多 Python。这会破坏 Ubuntu。
因此首先删除该符号链接:
sudo rm /usr/local/bin/python
然后仔细检查which python
并python
返回一些合理的结果。您正在寻找到 2.whatever 的映射。
为了实现您真正想要的功能,您需要使用 virtualenv/venv。这会将您想要的任何版本的 Python 复制到一个特殊环境中。您“激活”此环境,它会更改您的运行时PATH
以查找您在构建 venv 时使用的 Python 版本。
python3 -m venv venv
. venv/bin/activate # activates it
which python # should return /path/to/venv/bin/python
如果您在运行 venv 模块时遇到问题ensurepip
(14.04 上的已知问题可能不会影响您),我使用的修复方法:
wget -qO- http://d.pr/f/YqS5+ \
| sudo tar xzf - -C $(python3 -c "import sys; print(sys.path[1])") --no-same-owner
这是为 14.04 设计的,因此可能会破坏与 python3 相关的所有内容。