我有一个使用subprocess调用第三方工具的Python 3.6脚本。
问题是,必须在虚拟环境内运行
我并不了解
main_script.py:
#!/usr/bin/env python
import subprocess
result = subprocess.run(['third-party-tool', '-arg1'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
问题是,必须在虚拟环境内运行
main_script.py
,而不能在任何虚拟环境中运行 third-party-tool
。我并不了解
third-party-tool
,除了它在我的路径上。在我激活虚拟环境时调用它会导致它卡住并在后面抛出异常。我不知道它是否使用默认的 Python 二进制文件,还是自己启动虚拟环境并在其中执行操作。它不是一个 Python 脚本,但显然会以某种方式调用一个脚本。
如何告诉 subprocess 退出我的虚拟环境并在默认 shell 环境中运行命令?
我查看了几个类似的问题:
- 在不同的虚拟环境中运行子进程 -- 在第一种情况下,他们通过使用特定版本的Python调用脚本来指定环境。
third-party-tool
不是一个Python脚本(我认为它是bash)。 - 使用修改后的环境变量运行Python subprocess/Popen -- 在第二种情况下,他们正在调整现有的环境变量,这看起来很有前途,但我想重置为默认环境,并且我不确定我是否必须知道需要清除或重置哪些变量。