使用特定版本的 Python 创建 Windows Python virtualenv

Create Windows Python virtualenv with a specific version of Python

提问人:Hack-R 提问时间:5/25/2017 最后编辑:Hack-R 更新时间:11/20/2017 访问量:22269

问:

我有多个版本的 Python。我需要为我的项目创建一个virtualenv,并确保它使用的是Python 2.7。

我试图通过将本 Windows 指南这篇 SO 帖子与特定类型的 Python 相结合来实现这一目标。virtualenvvirtualenv

不幸的是,它不起作用,这可能是因为后一个资源是由使用 Linux 的人编写的。

这是我所做的:

C:\Python27\Scripts>pip install virtualenv You are using pip version
6.0.6, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting virtualenv   Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 3.7MB/s eta 0:00:01 Installing collected packages: virtualenv

Successfully installed virtualenv-15.1.0

C:\Python27\Scripts>pip install virtualenvwrapper-win You are using pip version 6.0.6, however version 9.0.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command. Collecting virtualenvwrapper-win   Downloading virtualenvwrapper-win-1.2.1.zip Requirement already satisfied (use
--upgrade to upgrade): virtualenv in c:\python27\lib\site-packages (from virtualenvwrapper
-win) Installing collected packages: virtualenvwrapper-win   Running setup.py install for virtualenvwrapper-win Successfully installed virtualenvwrapper-win-1.2.1

C:\Python27\Scripts>mkvirtualenv c:\users\hackr\Desktop\P27_D19  --python=C:\Python27\python.exe
'python.exe' is not recognized as an internal or external command, operable program or batch file.

“virtualenv.exe”未被识别为内部或外部命令, 可操作的程序或批处理文件。

更新:我只是使用普通命令而不是推荐的命令来工作,我认为这是他们让我安装的包装器的一部分。如果有人想帮助我了解发生了什么,以及不使用包装器是否有任何缺点,那将是写出答案的好方法。virtualenvmkvirtualenv

蟒蛇 windows python-2.7

评论


答:

1赞 CristiFati 5/25/2017 #1

如果安装了多个 Python 版本,最好始终指定完整路径(可以肯定)并且不依赖环境变量(至少我是这样做的):

  • pip install virtualenv:我这样做就像:(不介意路径)来控制 Python 安装(virtualenvwrapper 也是如此)。"C:\Install\x64\Python\3.5.3\python.exe" -m pip install virtualenv

我的“%PYTHON_INSTALLATION_DIR%\Scripts”(例如“C:\Install\x64\Python\3.5.3\Scripts”)文件夹中没有 mkvirtualenv,但是(这是我现在“制作”的示例):

  • "c:\Install\x64\Python\3.5.3\Scripts\virtualenv.exe" -p "c:\Install\x64\Python\2.7.13\python.exe" "c:\venvs\py2713"

从那时起:

  • "c:\venvs\py2713\Scripts\activate.bat"
  • python......

我知道,指定所有这些时髦的路径有点烦人(在 Lnx 上要容易得多),但至少它是安全的。无论如何,在设置虚拟环境后,您可以调整环境 (%PATH%),这样您就不必指定完整路径。

我在写作时注意到了你的评论,我必须说 PyCharm专业版)是使用 Django 的绝佳工具(事实上,一般是 Python)。另一方面,如果你选择社区版,它就不是那么好了(正如预期的那样)。[SO]:在 PyCharm Community Edition 中从鼠标右键单击上下文菜单运行/调试 Django 应用程序的 UnitTests?是我必须处理的痛苦问题之一。

@EDIT0

刚才我安装了virtualenvwrapper-win: 。运行 mkvirtualenv,无论是通过其完整路径还是在 %PATH% () 中添加其父文件夹,都会产生相同的错误:"C:\Install\x64\Python\3.5.3\python.exe" -m pip install virtualenvwrapper-winmkvirtualenv a

“python.exe”不被识别为内部或外部命令、可操作程序或批处理文件。

但它创建了 VEnv(在 %USERPROFILE%\Envs 下)。所以这个错误是良性的。无论如何,可以通过以下任一方式修复它:

  • 设置 %PYTHONHOME%
  • %PATH% 中添加 python.exe 的路径

我所做的另一个步骤是将 %WORKON_HOME% 设置为我希望我的 VEnvs 所在的文件夹。请注意,环境变量必须持久化(因为我这样做只是为了测试目的,所以我只在我用于此任务的 cmd 控制台中设置它们),否则每次需要使用这些工具时都必须设置它们。

在那次工作之后,lsvirtualenv 就像一个魅力一样工作(嗯,没有 Lnx 那么好,但足够接近)。

注意(关于 mkvirtualenv v1.2.1):它将使用默认的 python.exe(见上文),作为新 VEnv 的基础,它不像 virtualenv.exe(接受 -p/--python 参数)灵活。

评论

0赞 Hack-R 5/25/2017
我认为你写的东西会起作用,我支持你的答案。请检查我刚刚附加到问题中的更新作为编辑。我在大约 10 分钟前让它工作,但我不确定为什么教程推荐的包装器不起作用,或者我是否因不使用它而导致未来的问题。如果您对此有任何了解,请将其添加到您的答案中,我会接受它作为解决方案。是的,我同意这是一个很好的 IDE,但恕我直言,IDE 与问题/答案没有任何关系(即使它确实如此,被迫使用某些特定的 IDE 也会受到限制)。
0赞 CristiFati 5/25/2017
不使用 virtualenvwrapper,绝对不会对未来产生负面影响,因为它是 virtualenv 的简单包装器。我记得从 Lnx + Django 的“时代”开始,这个功能真的很棒(使用 TAB 从命令行“导航”VEnv 名称,就好像它们是文件/文件夹一样)。但是,我不能在 Win 上做同样的事情(我还必须说我没有非常努力)。workon
0赞 Hack-R 5/25/2017
非常感谢;我已将您的答案标记为解决方案
0赞 thebjorn 11/18/2017
mkvirtualenvon now 还采用参数来传递 python 可执行文件(所有其他 virtualenv 标志也可用)。virtualenvwrapper-win-p
0赞 CristiFati 11/18/2017
@thebjorn 是的,这是真的,我在答案中的一个命令中使用它。