python - 使用子进程时如何留在虚拟环境中?
问题描述
我有一个在虚拟环境中运行的 python 脚本。我需要这段代码来调用另一个 python 脚本。为此,我使用subprocess.call(['python', 'python_script.py'])
了 ,但是 python_script 卡在导入中,因为它在虚拟环境之外运行,并且某些模块仅在 venv 中可用。
我应该怎么做才能调用 subprocess 并留在 venv 中?
(顺便说一句,我现在正在使用 Windows,但我正在寻找一个跨平台的解决方案)
编辑:据我所知,我想要的行为是默认行为,我刚刚删除了虚拟环境并创建了新环境。令人惊讶的是,它奏效了。不过,仍然不知道旧 venv 发生了什么
解决方案
如果我没记错的话,以下应该让你走上正轨:
import sys
subprocess.call([sys.executable, 'python_script.py'])
sys.executable
将为您提供当前正在运行的 Python 解释器。这意味着如果您已经在虚拟环境中,子进程也将在虚拟环境中。
如果结果仍然不完全符合您的预期,您可能需要考虑转发一些环境变量(例如) VIRTUAL_ENV
,PATH
尽管这不是必需的。
参考资料:
推荐阅读
- android - 如何在一个片段中收集数据并将其显示在 android studio 的另一个片段中,我正在使用共享首选项来执行此操作
- go - VSCode 出于某种原因在调试控制台中运行
- java - 如何在使用另一个活动滑动屏幕的活动中使用 onBackPressed?
- sql-server - 如何在 SQL Server 中以正确格式将字符串作为 DateTime 插入
- raspberry-pi - 重新加载 .asoundrc 文件而不重新启动
- system-verilog - 参数化打包结构中字段的位宽,以便模块可以推断在端口映射中使用的位宽
- reactjs - 如何使用 css 模块设置特定按钮的样式?
- node.js - 如何连接 Express 后端和 Next.js 前端?
- visual-studio-code - 如何获取 VSCode 中选项卡的文件路径?
- sql - 将 Json 放在 sql 中新表的一个字段中