如何使用 Python 2.7 创建 Python 3.5 虚拟环境?

Posted

技术标签:

【中文标题】如何使用 Python 2.7 创建 Python 3.5 虚拟环境?【英文标题】:How to create a Python 3.5 virtual environment with Python 2.7? 【发布时间】:2017-07-11 16:11:45 【问题描述】:

我的系统运行的是 CentOS 6。我没有管理员权限,所以sudo 不可用。我有可用的 Python 2.7.3 以及 pipvirtualenv。我希望我可以使用这些来设置一个新的虚拟环境来安装和运行 Python 3.5 或更高版本。

我尝试了这里描述的方法: Using Python 3 in virtualenv

但是得到了这个错误:

$ virtualenv -p python3 venv
The path python3 (from --python=python3) does not exist

我的系统还安装了一个 Python 3.4 模块,所以我尝试了,但是 virtualenv 似乎在那里不起作用:

$ module load python/3.4.3
$ virtualenv -p python3 venv
-bash: virtualenv: command not found

这似乎是有道理的,因为 virtualenv 仅适用于 Python 2.7:

$ module unload python
$ module load python/2.7
$ which virtualenv
/local/apps/python/2.7.3/bin/virtualenv

因此,下一个合乎逻辑的步骤似乎是为我的 Python 3 安装 virtualenv...但这也不起作用:

$ pip3 install virtualenv
Traceback (most recent call last):
  File "/local/apps/python/3.4.3/bin/pip3", line 7, in <module>
    from pip import main
ImportError: cannot import name 'main'

还有

$ pip3 install --user virtualenv
Traceback (most recent call last):
  File "/local/apps/python/3.4.3/bin/pip3", line 7, in <module>
    from pip import main
ImportError: cannot import name 'main'

我开始用 Google 搜索这条新的错误消息,但没有看到任何与这种情况相关的信息。有任何想法吗?即使我可以在我的 Python 3.4 模块上安装 virtualenv,我仍然无法将其升级到 Python 3.5+ 吗?

为了解决问题,我还尝试从源代码编译我自己的 Python 3.6,但这也不起作用:

Python-3.6.0$ make install
if test "no-framework" = "no-framework" ; then \
        /usr/bin/install -c python /usr/local/bin/python3.6m; \
    else \
        /usr/bin/install -c -s Mac/pythonw /usr/local/bin/python3.6m; \
    fi
/usr/bin/install: cannot create regular file `/usr/local/bin/python3.6m': Permission denied
make: *** [altbininstall] Error 1

更多背景信息:

$ which pip3
/local/apps/python/3.4.3/bin/pip3

$ which python
/local/apps/python/3.4.3/bin/python

【问题讨论】:

要为python3.5创建一个virtualenv,你必须在你的操作系统上安装python3.5;你能用python3打开python shell吗?我认为基于python3.4创建virtualenv时应该是virtualenv python3.4 venv 既然我不能从源代码安装 Python 3.x,我猜我就不可能安装 Python 3.5+ 了?运行 virtualenv -p /local/apps/python/3.4.3/bin/python venv 似乎确实可以正确创建虚拟环境,尽管它仍然没有根据需要运行 Python 3.5+。 【参考方案1】:

尝试以下命令:

pip3 install virtualenv
pip3 install virtualenvwrapper
mkdir ~/.virtualenvs
export WORKON_HOME=~/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
source ~/.bash_profile
which python3

现在把上一条命令中python3的path的结果复制到下面的命令中:

mkvirtualenv --python=python3/path/in/last/command myenv

我假设 pip3 已经安装。如果没有,请在运行这些命令之前安装它。

来源:https://docs.coala.io/en/latest/Help/MAC_Hints.html#create-virtual-environments-with-pyvenv

(我的机器上确实有 sudo 访问权限。没有它我没有尝试过命令。如果出现任何问题,请发布。)

由于您已经安装了 virtualenv,您可能只需要更新文件,然后使用适当的参数运行命令 mkvirtualenv。

【讨论】:

我用pip3 install 命令(相同的错误消息)和which python3 的结果更新了OP。【参考方案2】:

您可以下载miniconda 或Anaconda。它不需要超级用户权限,因为它安装在您的主目录中。安装后,您可以像这样创建新环境:

conda create -n py35 python=3.5

然后就可以切换到新环境了:

source activate py35

【讨论】:

看起来这行得通,在我的系统上运行module unload python 以清除加载的Python,然后运行export PYTHONPATH=/home/user/anaconda3/bin:$PYTHONPATH; export PATH=/home/user/anaconda3/bin:$PATH 以设置正确的路径变量【参考方案3】:

Windows 上试试这个。

virtualenv -p C:\Python35\python.exe django_concurrent_env
cd django_concurrent_env
.\Source\activate
deactivate

【讨论】:

以上是关于如何使用 Python 2.7 创建 Python 3.5 虚拟环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GTK3 和 Python 2.7 中的图像对象上创建“点击事件”

如何从Java运行python 2.7代码?

如何从 Python 3.2 降级到 2.7?

Python 2.7 - 如何将类属性(指针?)分配给变量(需要它来创建 Oz-esque 数据流变量)

如何在python 2.7中使用“e”(欧拉数)和幂运算

如何使用Python 2.7对YoBit API进行身份验证?