我正在尝试创建一个 python 脚本来自动化我的一些个人内容。在脚本中,我首先要激活我的虚拟环境,然后执行一些其他任务(API 调用和处理它们)。但是在script.py
负责激活虚拟环境的命令中不起作用。我努力了
import subprocess
subprocess.Popen(['D:/work/venv/scripts/activate'], shell=True) # Not Working
subprocess.run(['D:/work/venv/scripts/activate'], shell=True) # Not Working
但这并没有激活venv,我也尝试过,但这似乎不起作用
import os
os.system('D:/work/venv/scripts/activate') # Not Working
我也试过
activate_this = 'D:/Work/venv/scripts/activate_this.py' # Not working
with open(activate_this) as f:
code = compile(f.read(), activate_this, 'exec')
exec(code, dict(__file__=activate_this))
以上都没有工作在 linux/ubuntu shell 脚本中完成了工作
source venv/bin/activate
我想要类似的东西,但使用 python 脚本,它将能够在 shell/cmd 中激活虚拟环境
看起来我链接的这个答案不适用于 Python 3,但在该帖子中答案的评论中,我从@Calimo 找到了以下对我有用的内容:
activate_this_file = "/path/to/venv/bin/activate_this.py"
exec(compile(open(activate_this_file, "rb").read(), activate_this_file, 'exec'), dict(__file__=activate_this_file))
编辑:经过一些讨论,看起来真正的问题是在subprocess
没有指定正确环境的情况下使用。默认情况下subprocess
使用全局环境生成一个新进程。env
通过在调用时提供 arg来指定所需的虚拟环境subprocess
,例如在使用上面的代码激活虚拟环境后:
venv= os.environ.copy()
subprocess.check_all(["pip3", "install", "flask"], env=venv)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句