使用不同的Python版本创建虚拟环境时出现问题

时间:2020-01-30 13:56:02

标签: python-3.x windows-10 virtualenv virtualenvwrapper python-venv

我正在做一个大项目,需要从python2.7移植到python3.7。 对于开发,我依靠虚拟环境。

对于2.7v,我使用的是由virtualenv模块创建的虚拟环境,它包含virtualenvwrappervirtualenvwrapper-win软件包。

对于3.7v,我尝试使用相同的软件包创建一个env,这次我将它们安装到python3.7目录中。我设法将python3.7设置为其自己的环境变量,将其命名为python3.exe,以便可以选择在哪里安装其他python软件包。

pip install virtualenv-将Virtualenv安装在python2.7目录中,但是

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

vs。

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可执行文件的路径和版本) env)。

但是,这是我得到的:

(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>

在我看来,好像在创建virtualenvwrapper env时没有得到正确的envTest,因此间接地称为错误的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
...

1 个答案:

答案 0 :(得分:1)

我通过以下步骤解决了这个问题:

  1. 我了解了Python Launcher for Windows py.exe

  2. 我必须将我的Python3.7可执行文件从python3.exe重命名为python.exe,以便使其可以在py.exe中执行。

  3. 为了使用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