2017-06-09 47 views
0

是否有可能通过外部工具访问已经在windows中运行的virtualenv?我需要通过执行django运行实例的python manage.py dosometing来运行cron。对于这我想我会设置Windows任务,将执行类似cmd.exe C:\django\manage.py dosometing,但我不明白如何做到这一点,如果django运行在virtualenv是否有可能访问Windows中已经运行的virtualenv

+0

目前还不清楚你在问什么。 virtualenv不是运行的,它只是设置环境变量和路径的一种方式。 –

回答

2

是的,你可以。 virtualenv不像虚拟机,它不是运行。 virtualenv只是一个设置,你可以在一台机器上安装多个python。每个virtualenv都位于一个单独的目录中,因此你可以安装不同的库,不同版本的python等等。当你激活virtualenv时,你只需设置一些环境变量,如PATH,它告诉python程序使用哪些python可执行文件和库。

所以当人们说'Django在virtualenv中运行'时,他们只是表示django正在运行..并且有一个virtualenv设置来控制Django使用哪个python安装。

如果在virtualenv中的文档看这里:https://virtualenv.pypa.io/en/stable/userguide/ ...

它会告诉你,你的激活脚本位于:

\path\to\env\Scripts\activate 

\path\to\env应的实际位置来代替你的virtualenv中。

因此,如果您在命令窗口中运行,请首先运行激活脚本,然后您的所有以下命令将位于virtualenv中。如果你从调度程序等运行,最简单的方法是创建一个首先运行激活脚本的批处理文件,然后创建django命令。这可确保您始终以正确的virtualenv运行。

如果你真的只有一个Python安装,那么技术上的virtualenv是没有必要的..在那种情况下,你可以编辑Windows的环境变量如下:

VIRTUAL_ENV="/path/to/your/virtualenv" 

然后还,追加到你的Path的结尾是你python和python脚本目录的路径。在我的系统上这些是:

C:\Python27\Scripts;C:\python27\; 

..并确保您的路径中没有其他python目录。

如果打开PowerShell窗口并运行env,它会告诉你你的环境变量的当前设置。如果你这样做,运行activate(在你的virtualenv目录),然后再次运行env,两者比较Path(和其他变量)..然后你就能够轻松地看到activate做你的环境,你然后可以将其添加到您的Windows配置中。

然后,当你运行python myprogram.py这将是使用的virtualenv无需激活。

+0

很抱歉,我可以在哪里编辑VIRTUAL_ENV和PATH变量? –

+0

我目前在Windows 7上,在其他版本中可能会有所不同。但进入'控制面板','系统'..然后点击'高级系统设置',然后点击'环境变量'。或者,至少在Windows 7中,如果您在开始菜单的搜索框中输入'environment',则会出现设置环境变量的选项。 –

+0

这里只有PATH在这里用C:\ Python \ Scripts; C:\ Python的。尝试像这样https://www.dropbox.com/s/ek05zeqn55fey20/Screenshot%202017-06-09%2022.04.49.png?dl=0并且没有激活,但是没有运气 –

相关问题