使用不同 Python 版本创建虚拟环境时出现问题
Problems creating virtual env with different Python version
我正在处理一个需要从 python2.7 移植到 python3.7 的大项目。
对于开发,我依赖虚拟环境。
对于 2.7v,我使用的是使用 virtualenv
模块及其包 virtualenvwrapper
和 virtualenvwrapper-win
.
创建的虚拟环境
对于 3.7v,我尝试使用相同的包创建一个环境,这次我将它们安装到 python3.7 目录。我设法用自己的环境变量设置 python3.7,将其命名为 python3.exe
这样我就可以选择在哪里安装额外的 python 包。
即
pip install virtualenv
- 在 python2.7 目录中安装 Virtualenv
,但是
python3 -m pip install virtualenv
- 将其安装到 python3.7 目录
C:\Users\user1>pip freeze
...
stevedore==1.30.1
virtualenv==16.4.3
virtualenv-clone==0.5.1
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.5
对比
C:\Users\user1>python3 -m pip freeze
...
stevedore==1.31.0
virtualenv==16.7.5
virtualenv-clone==0.5.3
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.5
到目前为止一切顺利。
当我想用 python3.7 创建一个名为 envTest
的虚拟环境时,这是我使用的命令:
mkvirtualenv python3 envTest
为了避免进一步的错误识别,我将本地环境文件夹中的新 python 可执行文件重命名为 python0.exe
。
现在,我可以检查所有三个可用 python 来源的路径和版本(python.exe
=python2.7 , python3.exe
=python3 .7,并且 python0.exe
= python 可从虚拟环境执行)。
但是,这是我得到的:
(envTest) C:\Users\user1\projects\env_testing>whereis python
C:\Python27\python.exe
(envTest) C:\Users\user1\projects\env_testing>whereis python3
C:\Users\user1\AppData\Local\Programs\Python\Python37\python3.exe
(envTest) C:\Users\user1\projects\env_testing>whereis python0
C:\Users\user1\Envs\envTest\Scripts\python0.exe
(envTest) C:\Users\user1\projects\env_testing>python --version
Python 2.7.16
(envTest) C:\Users\user1\projects\env_testing>python3 --version
Python 3.7.4
(envTest) C:\Users\user1\projects\env_testing>python0 --version
Python 2.7.16
(envTest) C:\Users\user1\projects\env_testing>
在我看来,我在创建 envTest
环境时没有得到正确的 virtualenvwrapper
,因此间接调用了错误的 python 版本。
我该如何解决这个问题?
我也尝试简单地尝试 python3.x 内置 venv
,但使用它时,我收到一条错误消息:
C:\Users\user1\projects>python3 -m venv ./venv_Test venvEnv
Error: [WinError 2] The system cannot find the file specified
尽管它创建了以下目录,但没有 python 可执行文件
C:\Users\user1\projects\venv_Test>dir
...
30.01.2020 14:41 <DIR> .
30.01.2020 14:41 <DIR> ..
30.01.2020 14:41 <DIR> Include
30.01.2020 14:41 <DIR> Lib
30.01.2020 14:41 117 pyvenv.cfg
30.01.2020 14:41 <DIR> Scripts
...
我通过以下步骤解决了这个问题:
我读到了 Python Launcher for Windows py.exe
。
我不得不将我的 Python3.7 可执行文件从 python3.exe
重命名为 python.exe
以使其可执行 py.exe
.
为了使用 virtualenv
创建虚拟环境,我使用 py.exe
和以下命令:
mkvirtualenv envTest2 -p C:\Users\user1\AppData\Local\Programs\Python\Python37\python.exe
现在检查一切:
(envTest2) C:\Users\user1\projects\env_testing>whereis python
C:\Users\user1\Envs\nanopy3\Scripts\python.exe
(envTest2) C:\Users\user1\projects\env_testing>python --version
Python 3.7.4
我正在处理一个需要从 python2.7 移植到 python3.7 的大项目。 对于开发,我依赖虚拟环境。
对于 2.7v,我使用的是使用 virtualenv
模块及其包 virtualenvwrapper
和 virtualenvwrapper-win
.
对于 3.7v,我尝试使用相同的包创建一个环境,这次我将它们安装到 python3.7 目录。我设法用自己的环境变量设置 python3.7,将其命名为 python3.exe
这样我就可以选择在哪里安装额外的 python 包。
即
pip install virtualenv
- 在 python2.7 目录中安装 Virtualenv
,但是
python3 -m pip install virtualenv
- 将其安装到 python3.7 目录
C:\Users\user1>pip freeze
...
stevedore==1.30.1
virtualenv==16.4.3
virtualenv-clone==0.5.1
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.5
对比
C:\Users\user1>python3 -m pip freeze
...
stevedore==1.31.0
virtualenv==16.7.5
virtualenv-clone==0.5.3
virtualenvwrapper==4.8.4
virtualenvwrapper-win==1.2.5
到目前为止一切顺利。
当我想用 python3.7 创建一个名为 envTest
的虚拟环境时,这是我使用的命令:
mkvirtualenv python3 envTest
为了避免进一步的错误识别,我将本地环境文件夹中的新 python 可执行文件重命名为 python0.exe
。
现在,我可以检查所有三个可用 python 来源的路径和版本(python.exe
=python2.7 , python3.exe
=python3 .7,并且 python0.exe
= python 可从虚拟环境执行)。
但是,这是我得到的:
(envTest) C:\Users\user1\projects\env_testing>whereis python
C:\Python27\python.exe
(envTest) C:\Users\user1\projects\env_testing>whereis python3
C:\Users\user1\AppData\Local\Programs\Python\Python37\python3.exe
(envTest) C:\Users\user1\projects\env_testing>whereis python0
C:\Users\user1\Envs\envTest\Scripts\python0.exe
(envTest) C:\Users\user1\projects\env_testing>python --version
Python 2.7.16
(envTest) C:\Users\user1\projects\env_testing>python3 --version
Python 3.7.4
(envTest) C:\Users\user1\projects\env_testing>python0 --version
Python 2.7.16
(envTest) C:\Users\user1\projects\env_testing>
在我看来,我在创建 envTest
环境时没有得到正确的 virtualenvwrapper
,因此间接调用了错误的 python 版本。
我该如何解决这个问题?
我也尝试简单地尝试 python3.x 内置 venv
,但使用它时,我收到一条错误消息:
C:\Users\user1\projects>python3 -m venv ./venv_Test venvEnv
Error: [WinError 2] The system cannot find the file specified
尽管它创建了以下目录,但没有 python 可执行文件
C:\Users\user1\projects\venv_Test>dir
...
30.01.2020 14:41 <DIR> .
30.01.2020 14:41 <DIR> ..
30.01.2020 14:41 <DIR> Include
30.01.2020 14:41 <DIR> Lib
30.01.2020 14:41 117 pyvenv.cfg
30.01.2020 14:41 <DIR> Scripts
...
我通过以下步骤解决了这个问题:
我读到了 Python Launcher for Windows
py.exe
。我不得不将我的 Python3.7 可执行文件从
python3.exe
重命名为python.exe
以使其可执行py.exe
.为了使用
virtualenv
创建虚拟环境,我使用py.exe
和以下命令:
mkvirtualenv envTest2 -p C:\Users\user1\AppData\Local\Programs\Python\Python37\python.exe
现在检查一切:
(envTest2) C:\Users\user1\projects\env_testing>whereis python
C:\Users\user1\Envs\nanopy3\Scripts\python.exe
(envTest2) C:\Users\user1\projects\env_testing>python --version
Python 3.7.4