我知道这可能是一个非常古老的答案,但是我花了两天时间才解决了这个问题,所以我要分享一下。
管理系统中的 python 版本以在不同项目上工作而不会让你发疯的正确方法是使用pyenv及其插件pyenv-virtualenv和pyenv-virtualenvwrapper,正如 Henrique Bastos 在这篇博文中所描述的那样。请注意,这种工作方式有点独立于平台,因为 pyenv 是一个 python 包,它可以在 Windows、Linux 和 Mac OSx 上非常相似地运行。
问题始于 Arch Linux。该操作系统不提供 pyenv 的 pacman 版本,因此您必须按照release 的安装部分中所述从 github 克隆它来安装它。pyenv-virtualenv 和 pyenv-virtualenvwrapper 的安装过程相同。请注意,shell 初始化配置可能不同,在我的情况下,它不适用于 ~/.bash_profile,但适用于 ~/.bashrc。
如果您的安装像我最近设置的那样非常新鲜,那么运行 pyenv 并不简单,因为 pip 需要 openSSL,即使您通过 pacman 安装它,pyenv 也看不到它。所以,如果你想安装旧版本的 Python(即 3.4.3),你会发现 shell 抱怨你没有安装 openSSL 插件,即使你有它。老实说,我第一次尝试安装时没有正确的软件包;您必须下载以下软件包
sudo pacman -S openssl
sudo pacman -S openssl-1.0
sudo pacman -S python-pyopenssl
sudo pacman -S python2-pyopenssl
我解决问题的方法是添加pyenv 安装常见问题解答中描述的标志:该解决方案最终导致我安装了我想要的 python 版本:
LDFLAGS="-L/usr/lib/openssl-1.0" \
CFLAGS="-I/usr/include/openssl-1.0" \
pyenv install -v 3.4.3
为了避免每次更新 python 安装环境时都进入 FAQs 页面,你可以在 ~/.bashrc 或任何你的 shell 中添加一个别名,如下所示:
echo alias pyenv='LDFLAGS="-L/usr/lib/openssl-1.0" \
CFLAGS="-I/usr/include/openssl-1.0" \
pyenv' >> ~/.bashrc
通过这种方式,您可以使用干净的 pyenv 语法正确安装 python,并以相同的方式通过其插件管理它(因为语法是 pyenv [COMMAND] [OTHERSTUFF])。