【发布时间】:2020-11-10 02:11:48
【问题描述】:
在 W10 上使用 venv 操作时,如果从目录中的文件调用子进程,则子进程似乎无法访问 venv。有没有办法让它工作?
理想情况下,我希望该方法可以移植到 Linux,但我会采用任何能让项目运行的方法。
这是我的测试:
- main.py 使用 Popen 调用 sub_proc.py。
- sub_proc.py 导入 uuid_shortener,已安装在虚拟环境中。
如果我直接运行 sub_proc.py,它运行时不会出错。
但是,如果我运行 main.py,我会在 uuid_shortener 的导入语句中看到错误。
main.py
import subprocess
import time
print(subprocess.Popen(['python', 'sub_proc.py']))
time.sleep(1)
sub_proc.py
import uuid_shortener
这是运行代码的输出。
(venv) PS C:\Users\...\popenvenv> python .\sub_proc.py
(以上没有错误)
(venv) PS C:\Users\...\popenvenv> python .\main.py
<Popen: returncode: None args: ['python', 'sub_proc.py']>
Traceback (most recent call last):
File "C:\Users\...\popenvenv\sub_proc.py", line 1, in <module>
import uuid_shortener
ModuleNotFoundError: No module named 'uuid_shortener'
(venv) PS C:\Users\...\popenvenv>
【问题讨论】:
标签: python-3.x windows subprocess