Virtualenv 没有使用 Python 的正确版本
Virtualenv doesn't use right version of Python
我在亚马逊的 Cloud9 工作。
ec2-user:~/environment/flask_init $ python -V
Python 2.7.14
ec2-user:~/environment/flask_init $ virtualenv -p python3 venv
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/ec2-user/environment/flask_init/venv/bin/python3
Also creating executable in /home/ec2-user/environment/flask_init/venv/bin/python
Installing setuptools, pip, wheel...done.
ec2-user:~/environment/flask_init $ source venv/bin/activate
(venv) ec2-user:~/environment/flask_init $ python -V
Python 2.7.14
为什么虚拟环境没有使用Python3?
请注意,此问题与 this one 不重复。这个问题特别与 Cloud 9 环境设置 Python 别名的方式有关。
我在我的机器上试过你的流程,一切正常。
dluzak@Karol-PC:/tmp$ python -V
Python 2.7.12
dluzak@Karol-PC:/tmp$ virtualenv -p python3 venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /tmp/venv/bin/python3
Also creating executable in /tmp/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
dluzak@Karol-PC:/tmp$ source venv/bin/activate
(venv) dluzak@Karol-PC:/tmp$ python -V
Python 3.5.2
(venv) dluzak@Karol-PC:/tmp$
尽管如此,在使用 python 3: python3 -m virtualenv venv
创建 venv 时,我个人使用 virtualenv
作为模块。也许这会奏效。
您提供的细节很少。您是否为 Python 2 和 3 安装了 virtualenv?你确定 Python 3 解释器工作正常吗?
编辑:
在评论中调查后,我们发现问题出在亚马逊配置的 bash 设置中。它接缝亚马逊配置 bash (可能在 ~/.bashrc 中)用别名替换 python 调用。要解决此问题,需要在启用 venv 之前调用 unalias python
。在Amazon docs
中有描述
当我今天早些时候使用 virtualenv 时,我遇到了同样的问题,我的环境没有使用正确版本的 python。
而不是像这样激活我的环境:
source activate
我发现像这样激活它确实有效:
source ./activate
希望对您有所帮助!
这是我在 Cloud9 上创建 virtualenv 的方法
Python 3.4
$ sudo pip install virtualenv
$ virtualenv -p /usr/bin/python3.4 venv
$ source venv/bin/activate
Python 3.6
$ sudo apt update
$ sudo apt install python3.6-venv
$ python3.6 -mvenv venv
$ source venv/bin/activate
我遇到过类似的问题。
在我的情况下不起作用,因为我移动了虚拟 env 文件夹(但重命名时会发生同样的事情)。
您可以通过键入
了解正在使用哪个版本的 python(以及将导入哪个模块)
$ which python
如果它写成这样:
/usr/bin/python
那就说明你的虚拟环境没有激活。
要解决此问题,无需创建新的虚拟环境,只需编辑环境中的脚本激活文件即可:
$ nano venv/bin/activate
并使用您的虚拟环境的绝对路径编辑以下行:
VIRTUAL_ENV="/YOUR_ABSOLUT/PATH_TO/venv"
希望对您有所帮助
:)
我在亚马逊的 Cloud9 工作。
ec2-user:~/environment/flask_init $ python -V
Python 2.7.14
ec2-user:~/environment/flask_init $ virtualenv -p python3 venv
Running virtualenv with interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/ec2-user/environment/flask_init/venv/bin/python3
Also creating executable in /home/ec2-user/environment/flask_init/venv/bin/python
Installing setuptools, pip, wheel...done.
ec2-user:~/environment/flask_init $ source venv/bin/activate
(venv) ec2-user:~/environment/flask_init $ python -V
Python 2.7.14
为什么虚拟环境没有使用Python3?
请注意,此问题与 this one 不重复。这个问题特别与 Cloud 9 环境设置 Python 别名的方式有关。
我在我的机器上试过你的流程,一切正常。
dluzak@Karol-PC:/tmp$ python -V
Python 2.7.12
dluzak@Karol-PC:/tmp$ virtualenv -p python3 venv
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /tmp/venv/bin/python3
Also creating executable in /tmp/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
dluzak@Karol-PC:/tmp$ source venv/bin/activate
(venv) dluzak@Karol-PC:/tmp$ python -V
Python 3.5.2
(venv) dluzak@Karol-PC:/tmp$
尽管如此,在使用 python 3: python3 -m virtualenv venv
创建 venv 时,我个人使用 virtualenv
作为模块。也许这会奏效。
您提供的细节很少。您是否为 Python 2 和 3 安装了 virtualenv?你确定 Python 3 解释器工作正常吗?
编辑:
在评论中调查后,我们发现问题出在亚马逊配置的 bash 设置中。它接缝亚马逊配置 bash (可能在 ~/.bashrc 中)用别名替换 python 调用。要解决此问题,需要在启用 venv 之前调用 unalias python
。在Amazon docs
当我今天早些时候使用 virtualenv 时,我遇到了同样的问题,我的环境没有使用正确版本的 python。
而不是像这样激活我的环境:
source activate
我发现像这样激活它确实有效:
source ./activate
希望对您有所帮助!
这是我在 Cloud9 上创建 virtualenv 的方法
Python 3.4
$ sudo pip install virtualenv
$ virtualenv -p /usr/bin/python3.4 venv
$ source venv/bin/activate
Python 3.6
$ sudo apt update
$ sudo apt install python3.6-venv
$ python3.6 -mvenv venv
$ source venv/bin/activate
我遇到过类似的问题。 在我的情况下不起作用,因为我移动了虚拟 env 文件夹(但重命名时会发生同样的事情)。
您可以通过键入
了解正在使用哪个版本的 python(以及将导入哪个模块)$ which python
如果它写成这样:
/usr/bin/python
那就说明你的虚拟环境没有激活。
要解决此问题,无需创建新的虚拟环境,只需编辑环境中的脚本激活文件即可:
$ nano venv/bin/activate
并使用您的虚拟环境的绝对路径编辑以下行:
VIRTUAL_ENV="/YOUR_ABSOLUT/PATH_TO/venv"
希望对您有所帮助 :)