在启动python文件之前,我正在尝试调试一个项目,该项目在运行时向PYTHONPATH添加了许多附加库。
在Visual Studio代码中调试python文件之前,我无法使用tasks.json
文件添加这些命令(请参阅post Visual Studio Code unable to set env variable paths prior to debugging python file),所以我只能通过os.system("..")
命令添加它们
我只展示了下面添加的库中的一个:
# Standard library imports
import os
import sys
os.system("SET PYTHONPATH=D:\\project\\calibration\\pylibrary\\camera")
# Pylibrary imports
from camera import capture
当我调试时,它在行from camera import capture
上失败,并显示以下信息:
Exception has occurred: ModuleNotFoundError
No module named 'camera'
File "D:\project\main.py", line 12, in <module>
from camera.capture import capture
我也试过了
os.environ['PYTHONPATH']="D:\\project\\pylibrary\\camera"
和我仍然得到相同的错误
为什么它在运行脚本时没有记住pythonpath
?
在运行Visual Studio代码和调试项目文件时,我还能如何定义pythonpath
?
我知道我可以将pythonpath
添加到windows的环境变量中,但它加载了太多的库,并且我希望它在执行python脚本时只记住路径。
谢谢
发布于 2020-04-17 04:41:35
使用os.system()
是行不通的,因为它会启动一个新的cmd.exe shell并在该shell中设置env。这不会影响python进程的env变量。赋值给os.environ['PYTHONPATH']
将不起作用,因为此时您的python进程已经在sys.path
变量中缓存了该env var的值。解决方案是
import sys
sys.path.append(r"D:\project\calibration\pylibrary\camera")
https://stackoverflow.com/questions/61239726
复制相似问题