Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python虚拟问题_Python_Windows_Linux_Virtualenv - Fatal编程技术网

Python虚拟问题

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

我正在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
变量以指向新的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>