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

时间:2019-11-05 10:45:49

标签: python python-3.x visual-studio-code doctest

我正在使用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.pathos.environ.get('PYTHONPATH')中,这就是导入失败的原因。

2 个答案:

答案 0 :(得分:0)

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

二,您的设置非常接近您的需求,但是您不小心使用了字符串而不是对象来为终端指定环境变量。您想要的是:

"terminal.integrated.env.windows": {"PYTHONPATH": "C:\\MyPython"}

答案 1 :(得分:-1)

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