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

A Python script that activates the virtualenv and then runs another Python script?

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

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

之后,在虚拟环境中,开始到文件夹中的manage.py runserver

C:\Users\Admin\Desktop\helloworld\

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

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

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

仔细检查 python.exe 在您的 virtualenv 文件夹中的位置 - 不记得我怎么想的了。此 Python 将自身与 virtualenv 关联并默认使用其 site-packages

您可以激活您的 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文件(双击)启动服务器

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

例如

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 中的有用模式。

runserver.bat:

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

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

CALL path\to\base\virtual\environment\Scripts\activate.bat path\to\your\virtual\environment [path\to\your\virtual\environment]python.exe path\to\your\script\yoursript.py

没有 activate.bat 什么都行不通。我收到有关 mkl-server 的错误。此错误在此处描述 https://github.com/numpy/numpy/issues/15523。人们在那里抱怨 conda 被破坏,即只是调用 python.exe yoursript.py 不起作用。

对我来说,上面的方法不起作用,因此我会提供一个更笼统的答案。

但首先具体来说,这对我有用:

  1. 打开记事本
  2. 粘贴这个:
@echo off
CALL c:\env\Scripts\activate.bat
python c:\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 就可以做到这一点。

对我来说,使用这段代码:(script_file.bat)

@回声关闭

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

C:/Users/apo1979/Anaconda3/envs/PyPWBI/python.exe "d:/.APO_OneDrive/script_SpeedTest.py" runserver

暂停