我正在使用VScode在软件包中编写python类。我想在使用VScode终端时将此程序包的父目录添加到Python路径,以便可以import
程序包(与正在运行的文件的目录无关)。
我尝试了.env
文件和工作区设置,但没有成功。
最终,我想使用终端在类上运行doctest,为此,终端需要能够导入软件包。
.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
(在代码和doctest中包含import Pkg.Class1
),则目录C:\MyPython\Pkg
被添加到sys.path
,并且找不到和导入Pkg
程序包,而doctest
失败。
因此,我想将C:\MyPython
添加到python路径中,而不管所运行文件的目录如何。
当然,我可以将所有测试添加到test.py
并运行它,但是我真的只想在我正在研究的类中运行doctests,而不是每次都运行所有测试(然后翻转到另一个文件即可)。
这似乎应该很容易,但是我无法使其正常工作!
有什么想法吗?
PS:我没有为测试或类添加.py代码,因为它与问题无关,是import
失败了。最终,我看到所需的目录没有出现在sys.path
和os.environ.get('PYTHONPATH')
中,这就是导入失败的原因。