【发布时间】:2019-11-05 10:45:49
【问题描述】:
我正在使用 VScode 在包中编写 python 类。我想在使用 VScode 终端时将此包的父目录添加到 Python 路径,以便我可以 import 包(无论正在运行的文件的目录如何)。
我尝试了.env 文件和工作区设置,但没有成功。
最终我想使用终端在类上运行文档测试,为此终端需要能够导入包。
.env 文件
我有一个工作区。我首先尝试按如下方式添加.env 文件(注意我在Windows 上使用Python 3 Anaconda):
PYTHONPATH=C:\\MyPython;${PYTHONPATH}
(我试过单双反斜杠和正斜杠,没有用)。
当我在终端中运行包含以下内容的脚本 (test.py) 时:
print(os.environ.get('PYTHONPATH'))
我刚回None。
我确实尝试在 Windows 中设置系统范围的 PYTHONPATH 环境变量,然后它会显示出来,但 C:\MyPython 没有添加到其中。我不想每次打开不同的 Workspace 时都必须添加/更改系统 PYTHONPATH!
工作区设置
然后我尝试在 MyProject.code-workspace 文件中添加工作区设置:
{
"folders": [
{
"path": "C:\\MyPython"
}
],
"settings": {
"terminal.integrated.cwd": "C:\\MyPython",
"terminal.integrated.env.windows": "C:\\MyPython"
}
}
这又没用。
文件结构
我的文件结构如下:
C:\MyPython
.env
MyProject.code-workspace
test.py
Pkg\
__init__.py
Class1.py
Class2.py
如果我使用绿色三角形按钮(“在 Python 终端中运行文件”)运行 test.py,则该文件的目录 (C:\MyPython) 将添加到 sys.path 并且一切正常(例如 import Pkg.Class1 正常)。
但是,如果我运行 Class2.py(其中包括代码和 doctest 中的 import Pkg.Class1),那么目录 C:\MyPython\Pkg 会被添加到 sys.path 并且它无法找到并导入 Pkg 包和doctest 失败。
因此,我想将 C:\MyPython 添加到 python 路径,而不管正在运行的文件的目录。
当然,我可以将所有测试添加到 test.py 并运行它,但我真的只想在我正在处理的课程中运行 doctest,而不是每次都运行所有测试(并且翻到另一个文件来做)。
看起来这应该很容易,但我无法让它工作!
有什么想法吗?
PS:我没有包含测试或类的 .py 代码,因为它与问题无关,是 import 失败。最终我可以看到所需的目录既没有出现在 sys.path 中,也没有出现在 os.environ.get('PYTHONPATH') 中,这就是导入失败的原因。
【问题讨论】:
标签: python python-3.x visual-studio-code doctest