Gre*_*ber 6 python virtualenv python-3.x
我需要一个python脚本来激活virtualenv,在virtualenv中运行另一个python程序,然后在第二个python程序关闭后关闭virutalenv。这是我的代码:
import os
import subprocess
from subprocess import Popen
activate_dir = "C:/Users/JohnDoe/theprogram/Scripts/"
os.chdir(activate_dir)
subprocess.Popen(["activate.bat"])
cal_dir = "C:/Users/JohnDoe/theprogram/"
os.chdir(cal_dir)
os.system('python program_file.py')
Run Code Online (Sandbox Code Playgroud)
但是,当此代码运行时,我收到一个导入错误,program_file这意味着 virtualenv 未激活。我怎样才能解决这个问题?
谢谢
编辑: 这是在 Windows 环境中。
问题是您正在使用使用该虚拟环境的 subprocess.Popen(["activate.bat"]) 创建一个新进程,您没有更改您的环境。您需要做的是在您跨越的同一进程中调用 python 脚本:
os.system("source activate;python -V")
Run Code Online (Sandbox Code Playgroud)
或者您可以编写一个 shell 脚本来启动虚拟环境并调用您发送给它的任何 python 脚本。在 bash 中(在 linux 上)这将是:
#!/bin/bash
# start a virtual environment and call a python module
# usage: ./runVirenvPythonModule module.py
source activate
python $1 # this is the first cmd line argument passed in
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4648 次 |
| 最近记录: |