首页 > 解决方案 > VSCode - 在终端和 pythonpath 中运行 Python 文件

问题描述

我试图了解 VSCode 与运行存储在项目子包中的 python 脚本相关的行为。如果我的项目结构如下:

proj/
  util/
  main/hello.py
test/

如果 hello.py 从 proj.util 导入 - 并且我使用“在终端中运行 Python 文件”来执行脚本,它会失败并出现 Module not found (proj.util) - 因为默认情况下项目顶级目录不会添加到 pythonpath。如果我在根目录中创建一个 .env 文件并为 PYTHONPATH 添加一个定义以包含我的项目顶级目录,则在通过上述选项运行时同样不使用该文件。

如果我创建一组默认的调试启动并使用“终端中的调试 Python 当前文件” - 这将读取 .env 文件并按预期工作。

在终端中运行脚本时,PyCharm 会自动将顶级项目目录添加到 sys.paths - VSCode 不应该提供这样的选项还是我错过了什么?

当前版本如下,尽管我在 Windows 下看到了相同的行为。

Version: 1.30.1
Commit: dea8705087adb1b5e5ae1d9123278e178656186a
Date: 2018-12-18T22:23:23.072Z
Electron: 2.0.16
Chrome: 61.0.3163.100
Node.js: 8.9.3
V8: 6.1.534.41
OS: Linux x64 4.19.12-arch1-1-ARCH

标签: pythonvisual-studio-code

解决方案


当您让 Python 运行时hello.py,PVSC 正在使用终端运行python proj/main/hello.py. python hello.py对于 Python,这与从目录运行相同,proj/main这意味着解释器甚至看不到其中hello.py包含的包(因此它没有 的概念proj.util)。

没有使用该.env文件,因为该文件再次只是在终端中直接执行,您的终端或 Python 都不会读取该.env文件。但是,当您使用调试器时,我们会指定详细信息,例如使用您的.env文件,以及调试器设置的原因PYTHONPATH


推荐阅读