我正在使用VScode在软件包中编写python类。我想在使用VScode终端时将此程序包的父目录添加到Python路径,以便可以import
该程序包(与正在运行的文件的目录无关)。
我尝试了.env
文件和工作区设置,但未成功。
最终,我想使用终端在类上运行doctest,为此,终端需要能够导入软件包。
我有一个工作区。我首先尝试如下添加.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
程序包和[ C0]失败。
这样,我想将doctest
添加到python路径中,而不管正在运行的文件的目录是什么。
当然,我可以将所有测试添加到C:\MyPython
并运行它,但是我真的只想在我正在研究的类中运行doctest,而不必每次都运行所有测试(并翻转到另一个文件来执行此操作)。
看来这应该很容易,但我无法使它正常工作!
有什么想法吗?
PS:我没有为测试或类添加.py代码,因为它与问题无关,是test.py
失败了。最终,我看到所需的目录没有出现在import
或sys.path
中,这就是导入失败的原因。
我正在使用VScode在软件包中编写python类。我想在使用VScode终端时将此包的父目录添加到Python路径,以便导入该包(无论...
有两件事。第一,Python并不是为您执行包中包含的文件而设计的,因此您在尝试使其工作方面与它的设计有些矛盾。最好执行类似的操作,例如使用Python的os.environ.get('PYTHONPATH')
标志执行所需的操作,例如-m
。这样,您无需操纵路径即可运行软件包中包含的模块。
VScode终端与Windows终端相同,因此您可以手动添加它。按winkey + S并键入“ env”,选择“编辑系统环境变量”。选择“环境变量”。在用户和系统上都编辑名为“ path”的变量。输入您要添加的路径。记得在编辑后重新启动所有终端。