激活 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 不起作用。
对我来说,上面的方法不起作用,因此我会提供一个更笼统的答案。
但首先具体来说,这对我有用:
- 打开记事本
- 粘贴这个:
@echo off
CALL c:\env\Scripts\activate.bat
python c:\app.py runserver
- 另存为whatever.bat
- 双击此文件即可运行
一般来说:在您的 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
暂停
在 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 不起作用。
对我来说,上面的方法不起作用,因此我会提供一个更笼统的答案。
但首先具体来说,这对我有用:
- 打开记事本
- 粘贴这个:
@echo off
CALL c:\env\Scripts\activate.bat
python c:\app.py runserver
- 另存为whatever.bat
- 双击此文件即可运行
一般来说:在您的 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
暂停