我在 Linux 上开发了一个 Python 包,它可以运行并且我的 pytest 成功了。 我正在使它与 Windows 兼容。 我说的是位于 'C:\import_path\my_package' 中的 'my_package' 我在虚拟环境的命令行中设置 PYTHONPATH,如下所示:
set PYTHONPATH="C:\import_path"
echo %PYTHONPATH%
"C:\import_path"
# Python script identifies this
print('PYTHONPATH = {}'.format(os.environ.get('PYTHONPATH')))
"C:\import_path"
但是,任何引用 my_package 的 Python 代码,当从已显式设置此 PYTHONPATH 的命令提示符运行时,将出错:
ModuleNotFoundError: No module named 'my_package'
但是,如果在系统环境变量中设置了 PYTHONPATH = C:\import_path,代码将运行良好。 它在 VSCode 中也运行良好:
"python.analysis.extraPaths": [
"C:\\import_path"
]
为什么 python.exe 不读取在 cmd 中设置的 %PYTHONPATH% 变量,但 python.exe 会读取它当从 VSCode 或操作系统环境变量调试运行时?
最佳答案
很可能您正在从不同的 shell session 运行或调用不同的 shell session ,并且变量未解析到所有 session 。您可以尝试这样设置:
setx PYTHONPATH "C:\import_path" /M
设置变量时,如果您打算使用多个 session ,则应在系统范围内进行设置。
关于python - 为什么在 Windows 上使用 cmd 的 Python 会忽略 %PYTHONPATH%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65576891/