将Python软件包添加到VSCode终端的路径中

问题描述 投票:0回答:2

我正在使用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程序包和[ C0]失败。

这样,我想将doctest添加到python路径中,而不管正在运行的文件的目录是什么。

当然,我可以将所有测试添加到C:\MyPython并运行它,但是我真的只想在我正在研究的类中运行doctest,而不必每次都运行所有测试(并翻转到另一个文件来执行此操作)。

看来这应该很容易,但我无法使它正常工作!

有什么想法吗?

PS:我没有为测试或类添加.py代码,因为它与问题无关,是test.py失败了。最终,我看到所需的目录没有出现在importsys.path中,这就是导入失败的原因。

我正在使用VScode在软件包中编写python类。我想在使用VScode终端时将此包的父目录添加到Python路径,以便导入该包(无论...

python python-3.x visual-studio-code doctest
2个回答
0
投票

有两件事。第一,Python并不是为您执行包中包含的文件而设计的,因此您在尝试使其工作方面与它的设计有些矛盾。最好执行类似的操作,例如使用Python的os.environ.get('PYTHONPATH')标志执行所需的操作,例如-m。这样,您无需操纵路径即可运行软件包中包含的模块。


-1
投票

VScode终端与Windows终端相同,因此您可以手动添加它。按winkey + S并键入“ env”,选择“编辑系统环境变量”。选择“环境变量”。在用户和系统上都编辑名为“ path”的变量。输入您要添加的路径。记得在编辑后重新启动所有终端。

© www.soinside.com 2019 - 2024. All rights reserved.