首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSCode -在终端和pythonpath中运行pythonpath

VSCode -在终端和pythonpath中运行pythonpath
EN

Stack Overflow用户
提问于 2019-01-06 15:31:37
回答 3查看 4.8K关注 0票数 1

我正在尝试理解VSCode与运行存储在项目子包中的python脚本有关的行为。如果我的项目结构如下所示:

代码语言:javascript
复制
proj/
  util/
  main/hello.py
test/

如果hello.py从proj.util导入--我使用‘’来执行脚本,它会失败,Module (proj.util) --因为默认情况下,项目顶层目录不会添加到pythonpath。如果我在根目录中创建一个.env文件,并为PYTHONPATH添加一个定义,以包含我的项目顶层目录,那么在通过上面的选项运行时,该文件同样不会被使用。

如果我创建一个默认的调试启动集,并使用' debug -Python文件在终端‘-这将读取.env文件并按预期工作。

在终端中运行脚本时,PyCharm会自动将顶级项目目录添加到sys.paths --难道VSCode不应该提供这样的选项吗?

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

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-07 23:41:52

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

没有使用.env文件,因为该文件再次只是终端中的直接执行,并且您的终端或Python都不读取.env文件。但是当您使用调试器时,我们可以指定一些细节,比如使用您的.env文件,以及为什么调试器会像您期望的那样设置PYTHONPATH

票数 1
EN

Stack Overflow用户

发布于 2019-04-30 22:09:10

只需将这些行添加到要执行的文件的顶部即可。

代码语言:javascript
复制
if __name__ == "__main__":
    import os
    import sys
    sys.path.append(os.getcwd())

这些脚本在直接执行__name__ == "__main__"时将目录where文件添加到路径中。

票数 0
EN

Stack Overflow用户

发布于 2020-08-04 19:22:59

TLDR:使用正确的PYTHONPATH启动VS代码

我的设置:在切换到项目目录时,用direnv (https://direnv.net/)自动从.env设置特定于项目的PYTHONPATH。这还设置了项目所需的虚拟环境。从命令行开始VS代码,以便使用正确的环境变量。

您可以创建一个shell脚本,设置正确的环境变量,并启动VS代码。

免责声明:我在包中使用绝对导入,这不是用相对导入测试的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54063050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档