我正在使用 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 没有添加到其中。我不想每次打开不同的工作区时都添加/更改系统 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
(包括import Pkg.Class1
在代码和 doctest 中)然后目录C:\MyPython\Pkg
被添加到sys.path
并且它无法找到并导入Pkg
包并且doctest
失败。
C:\MyPython
因此,无论正在运行的文件的目录如何,我都想添加到 python 路径。
当然,我可以将所有测试添加到test.py
并运行它,但我真的只想在我正在处理的类中运行 doctest,而不是每次都运行所有测试(并翻转到另一个文件来做它)。
看起来这应该很容易,但我无法让它工作!
有任何想法吗?
PS:我没有包含测试或类的 .py 代码,因为它与问题无关,它import
是失败的。最终我可以看到所需的目录既不在sys.path
也不出现os.environ.get('PYTHONPATH')
,这就是导入失败的原因。