如何在linux中停用virtualenv

问题描述 投票:0回答:1

我正在使用子进程从 Python 脚本启动一个新进程。在这个新进程中,应该激活一个新的虚拟环境,但由于某种原因旧环境仍然处于活动状态,为了停用旧环境,我使用 deactivate 调用。

我的剧本

commands = """
call deactivate
pip install -r req.txt
./venv/Scripts/activate
""".format(script_to_run)

result = subprocess.run(commands, shell=True, executable='/bin/bash')

如何在 Linux 中实现同样的效果?

python virtualenv
1个回答
0
投票

你所做的本质上是:

  • 开始新的
    bash
    流程
  • 停用该进程内的虚拟环境
    bash
  • 结束
  • bash
    过程。
不过,这些更改仅发生在

bash子进程

中。
父进程,即运行 Python 程序的进程,

不会改变

要更改

当前运行

、Python 解释器、exec 虚拟环境中

activate_this.py
子目录中的
Scripts
文件的虚拟环境:
ACTIVATOR = "/full/path/to/the/activate_this.py"
exec(open(ACTIVATOR).read(), {"__file__": ACTIVATOR})

因此,如果您在 
/home/roman/venv1

中创建了一个虚拟环境,那么

ACTIVATOR
应设置为
/home/roman/venv1/Scripts/activate_this.py
    

© www.soinside.com 2019 - 2024. All rights reserved.