我有多个版本的Python。我需要为我的项目创建一个 virtualenv 并确保它使用 Python 2.7。
我尝试将 Windows 上的 virtualenv
的
本指南和
virtualenv
上的 SO 帖子与特定类型的 Python 相结合来完成此任务。
不幸的是它不起作用,这可能是因为后一个资源是由使用 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”不被识别为内部或外部命令, 可运行的程序或批处理文件。
更新:我刚刚使用普通的
virtualenv
而不是推荐的 mkvirtualenv
命令来让它工作,我认为这是他们让我安装的包装器的一部分。如果有人想帮助我了解发生了什么以及不使用包装器是否有任何缺点,这将是写下答案的好方法。
如果安装了多个Python版本(或更多:同一版本的多个实例),最好始终指定完整路径(当然)并且不要依赖环境变量(至少我是这样做的 -检查 [SO]:如何在 Windows 10 上安装特定 Python 版本的软件包?(@CristiFati 的回答)):
pip install virtualenv
:我这样做:"C:\Install\x64\Python\3.5.3\python.exe" -m pip install virtualenv
(不要介意路径)来控制Python安装(VirtualEnvWrapper同样的事情)。我的 "%PYTHON_INSTALLATION_DIR%\Scripts"(例如 "C:\Install\x64\Python .5.3\Scripts")文件夹中没有 MkVirtualEnv(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
......
我知道,指定所有这些时髦的路径有点烦人(在 Nix 上要容易得多),但至少它是安全的。无论如何,设置虚拟环境后,您可以调整您的环境(%PATH%),这样您就不必指定完整路径。
我在写作时注意到了你的评论,我必须说 PyCharm(专业版)是一个与 Django 一起使用的优秀工具(事实上,通常与 Python 一起使用)。另一方面,如果您选择社区版,它就不太好(如预期)。 [SO]:从 PyCharm 社区版中的鼠标右键单击上下文菜单运行/调试 Django 应用程序的 UnitTests? 是我必须处理的痛苦问题之一。
刚才我安装了VirtualEnvWrapper-Win:
"C:\Install\x64\Python\3.5.3\python.exe" -m pip install virtualenvwrapper-win
。运行 MkVirtualEnv,无论是通过其完整路径还是通过在 %PATH% (mkvirtualenv a
) 中添加其父文件夹,都会产生相同的错误:
'python.exe' is not recognized as an internal or external command, operable program or batch file.
但是 它创建了 VEnv(在 %USERPROFILE%\Envs 下)。所以这个错误是良性的。无论如何,它可以通过以下任一方式修复:
设置%PYTHONHOME%
在%PATH%中添加python.exe
的路径我所做的另一个步骤是将 %WORKON_HOME% 设置为我想要放置 VEnvs 的文件夹。请注意,环境变量必须保留(因为我这样做只是为了测试目的,所以我只在用于此任务的 Cmd 控制台中设置它们),否则每次需要使用这些变量时都必须设置它们工具。
在那之后,workon,lsvirtualenv就像一个魅力(嗯,不像Nix那么好,但足够接近)。
注意(关于MkVirtualEnvv1.2.1):它将使用默认的python.exe(见上文),作为新的VEnv的基础,它不像virtualenv.exe那么灵活(接受 -p / --python 参数)。