一个Python脚本,它激活virtualenv,然后运行另一个Python脚本?

时间:2015-06-18 23:32:57

标签: python windows shell command virtualenv

在Windows Vista上,我需要一个脚本来启动activate(以激活virtualenv)脚本:

C:\Users\Admin\Desktop\venv\Scripts\

稍后,在虚拟环境中,从文件夹中的manage.py runserver开始:

C:\Users\Admin\Desktop\helloworld\

我该怎么办?我应该使用哪些模块?

7 个答案:

答案 0 :(得分:43)

您可以激活virtualenv,然后使用bat文件启动服务器。 将此脚本复制到文件中并使用.bat扩展名保存(例如,runserver.bat)

@echo off
cmd /k "cd /d C:\Users\Admin\Desktop\venv\Scripts & activate & cd /d    C:\Users\Admin\Desktop\helloworld & python manage.py runserver"

然后你可以运行这个bat文件(只需双击)即可启动服务器

答案 1 :(得分:9)

runserver.bat:

 CALL [your path]\Scripts\activate.bat
 python manage.py runserver

答案 2 :(得分:6)

如果你想直接调用virtualenv' ed Python,你可以这样做:

 C:\Users\Admin\Desktop\venv\Scripts\bin\python.exe manage.py runserver

仔细检查您的virtualenv文件夹中的python.exe位置 - 不记得它是如何从我的头脑中消失的。这个Python将自己与virtualenv联系起来,并默认使用它的site-packages

答案 3 :(得分:1)

不是使用字符串,而是可以使用插入符号(^),如此问题中所述: Long commands split over multiple lines in Windows Vista batch (.bat) file

E.g。

cmd /k cd path/to/activate ^
activate.bat
pip uninstall --yes package ^
pip install git+https://git.server.com/user/project@remote/branch ^
deactivate

将打开venv并卸载并重新安装Git存储库的分支。这是自动将代码部署到venv中的有用模式。

答案 4 :(得分:1)

我在Windows上使用Anaconda 3和python 3.7.6。必须在我的.bat文件中执行此操作:

CALL路径\到\基础\虚拟\环境\脚本\ activate.bat路径\到\您的\虚拟\环境 [path \ to \ your \ virtual \ environment] python.exe path \ to \ your \ script \ yoursript.py

如果没有activate.bat,则无效。我收到有关mkl服务器的错误。 https://github.com/numpy/numpy/issues/15523在此描述了此错误。人们抱怨那里的conda损坏了,即仅将python.exe调用yoursript.py无效。

答案 5 :(得分:0)

对我来说,上述方法不起作用,因此我将提供更一般的答案。

但首先,这对我有用:

  1. 打开记事本
  2. 粘贴:
@echo off
CALL c:\1\env\Scripts\activate.bat
python c:\1\app.py runserver
  1. 另存为whatever.bat
  2. 双击该文件运行

一般来说:在你的python项目下找到“activate.bat”很重要。在这种情况下,我的项目在 c:\1 和相关目录 env\Scripts 下的 activate.bat 显然可能取决于情况或随着时间的推移而改变。这使得通用脚本:

@echo off
CALL [Your python project path]\[the relative path of your activate.bat]\activate.bat
python [Your python project path]\[your python filename].py runserver

就我而言,项目路径是:c:\1 相对路径:env\Scripts 和 python 文件名:app

当我创建一个虚拟环境时,env 文件是相对于我的 python 文件放置的。以防万一您的情况与问题类似,脚本中的调用行将更改为 CALL [您的 activate.bat 位置]\activate.bat

即在这种情况下,以下应该起作用:

@echo off
CALL C:\Users\Admin\Desktop\venv\Scripts\activate.bat
python C:\Users\Admin\Desktop\helloworld\manage.py runserver

提示:我刚刚发现python将我的桌面作为工作目录。因此,将工作目录更改为 Python 路径可能是个好主意。就我而言,在 @echo off 下添加 cd\1 就可以做到这一点。

答案 6 :(得分:0)

对我来说,使用以下代码:(script_file.bat)

@echo 关闭

CALL C:\Users\apo1979\Anaconda3\Scripts\activate.bat PyPWBI

C:/Users/apo1979/Anaconda3/envs/PyPWBI/python.exe "d:/.APO_OneDrive/script_SpeedTest.py" 运行服务器

暂停