Python虚拟问题
我正在Windows XP上使用VirtualEnv。我想知道我的大脑是否正确地围绕着它: 我运行了Python虚拟问题,python,windows,linux,virtualenv,Python,Windows,Linux,Virtualenv,我正在Windows XP上使用VirtualEnv。我想知道我的大脑是否正确地围绕着它: 我运行了virtualenv ENV,它创建了C:\WINDOWS\system32\ENV。然后,我更改了我的PATH变量,将C:\WINDOWS\system32\ENV\Scripts改为C:\Python27\Scripts。然后,我将Django签出到C:\WINDOWS\system32\ENV\Lib\site packages\Django trunk,更新了我的PYTHON\u PATH
virtualenv ENV
,它创建了C:\WINDOWS\system32\ENV
。然后,我更改了我的PATH
变量,将C:\WINDOWS\system32\ENV\Scripts
改为C:\Python27\Scripts
。然后,我将Django签出到C:\WINDOWS\system32\ENV\Lib\site packages\Django trunk
,更新了我的PYTHON\u PATH
变量以指向新的Django目录,并继续执行easy\u install
其他操作(当然会进入我新的C:\WINDOWS\system32\ENV\Lib\site packages
目录)
我理解为什么我应该使用VirtualEnv,这样我就可以在同一台机器上运行多个版本的Django和其他库,但这是否意味着要在环境之间切换,我必须基本上更改我的PATH
和PYTHON\u PATH
变量?因此,我从开发一个Django项目开始,该项目在名为ENV
的环境中使用Django 1.2,然后更改我的PATH
,这样我就可以使用名为ENV2
的环境,该环境具有Django的开发版本
基本上就是这样,还是有更好的方法自动完成这一切(我可以用Python代码更新路径,但这需要我在应用程序中编写特定于机器的代码)
另外,与在Linux上使用VirtualEnv相比,这个过程如何(我是Linux的初学者)。是的,基本上这就是VirtualEnv所做的,这就是文档中的
activate
命令的作用:
激活脚本
在一个新创建的虚拟环境中
将是一个bin/activate shell脚本,
或脚本/activate.bat批处理文件
在窗户上
这会将您的$PATH更改为
指向virtualenv bin/
目录与workingenv不同,这是
它所做的一切;这很方便。但是
如果使用完整路径,如
/path/to/env/bin/python script.py
不需要激活
环境第一。你必须使用
源,因为它更改了
环境到位。激活后
您可以使用
函数deactivate可撤消
变化
激活脚本还将修改
您的shell提示以指示
环境当前处于活动状态
因此,您只需使用activate
命令即可完成以下所有操作:
> \path\to\env\bin\activate.bat
通常,
virtualenv
在当前目录中创建环境。除非出于某种原因您打算在C:\Windows\system32
中创建虚拟环境,否则我将使用不同的环境目录
您不需要弄乱路径:使用激活脚本(在\Scripts
中)确保Python可执行文件和路径是特定于环境的。完成此操作后,命令提示符将更改以指示环境。然后,您可以调用easy_install,以这种方式安装的任何东西都将安装到此环境中。使用deactivate
将一切设置回激活前的状态
例如:
c:\Temp>virtualenv myenv
New python executable in myenv\Scripts\python.exe
Installing setuptools..................done.
c:\Temp>myenv\Scripts\activate
(myenv) C:\Temp>deactivate
C:\Temp>
请注意,我不需要为deactivate
-activate
指定路径,这样当激活时,“Python”将在virtualenv中运行Python,而不是在您的系统Python中运行。(试一试-执行导入sys;sys.prefix的操作,它将打印环境的根目录。)
您只需激活一个新环境即可在环境/项目之间切换,但您需要为activate
指定整个路径,以便它知道要激活哪个环境。您永远不需要显式地处理PATH或PYTHONPATH
如果使用Windows Powershell,则可以利用。在Linux上,virtualenvwrapper
(链接指向Powershell的一个端口)使使用virtualenv
的生活更加轻松
更新:不完全是错误的,但可能不完全符合virtualenv
的精神。您可以采取不同的策略:例如,如果您在virtualenv中安装Django和您的站点所需的任何其他东西,那么您可以在项目目录(您正在开发站点的地方)中使用激活的virtualenv。因为它被激活了,所以Python会找到Django和其他任何您可以轻松安装到虚拟环境中的东西:而且因为您在项目目录中工作,所以Python也可以看到您的项目文件
进一步更新:您应该能够使用pip
,分发
而不是setuptools
,只需使用virtualenv
简单地安装python setup.py
。在安装某个环境之前,请确保已激活该环境。在我的项目wsgi.py文件中,我有以下代码(它与windows中的virtualenv、django、apache2和python 3.4配合使用)
在virtualhost文件配置中,我有
<VirtualHost *:80>
ServerName mysite
WSGIScriptAlias / c:/myproject/myproject/myproject/wsgi.py
DocumentRoot c:/myproject/myproject/
<Directory "c:/myproject/myproject/myproject/">
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
服务器名mysite
WSGIScriptAlias/c:/myproject/myproject/myproject/wsgi.py
DocumentRoot c:/myproject/myproject/
选项+索引+跟随符号链接+多视图
允许超越所有
要求本地
在Windows上,我安装了python 3.7,但仍然无法使用/Scripts/activate
从Gitbash激活virtualenv
,尽管在Powershell中运行Set ExecutionPolicy Unrestricted
并将设置更改为“Yes to All”后,它在Powershell中工作
我不喜欢Powershell,我喜欢使用Gitbash,因此要在Gitbash中激活virtualenv
,请首先导航到项目文件夹,使用ls
列出文件夹的内容,并确保看到“脚本”。使用cd Scripts
将目录更改为“Scripts”,一旦进入“Scripts”路径,请使用。激活
以激活虚拟
<VirtualHost *:80>
ServerName mysite
WSGIScriptAlias / c:/myproject/myproject/myproject/wsgi.py
DocumentRoot c:/myproject/myproject/
<Directory "c:/myproject/myproject/myproject/">
Options +Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>