Visual Studio Code - 如何向 python 路径添加多个路径?

Posted

技术标签:

【中文标题】Visual Studio Code - 如何向 python 路径添加多个路径?【英文标题】:Visual Studio Code - How to add multiple paths to python path? 【发布时间】:2017-05-19 04:50:56 【问题描述】:

我正在尝试使用 Visual Studio Code,到目前为止,它看起来很棒(轻便、快速等)。

我正在尝试让我的一个 Python 应用程序运行,它使用虚拟环境,但也使用不在我的虚拟环境的站点包中的库。

我知道在settings.json 中,我可以指定python.pythonPath 设置,我已经完成并指向虚拟环境。

我也知道我可以向python.autoComplete.extraPaths 添加额外的路径,到目前为止我正在添加外部库。问题是,当我调试时,它失败了,因为它没有找到python.autoComplete.extraPaths 中指定的库。

是否必须为此使用其他设置?

谢谢

【问题讨论】:

你读过这个吗:github.com/DonJayamanne/pythonVSCode/wiki/…? @jbasko,是的,我想我已经阅读了所有内容。它们都只表明 python.pythonPath 采用指向 python 解释器的单个值。例如,在 Eclipse 中,您可以添加外部源文件夹。但不确定如何为 vs 代码做到这一点。 听起来不像你读过。所以你的launch.json中有"pythonPath":"$config.python.pythonPath", 我在所有文件(设置、启动和 task.json)中将它设置为我的虚拟环境的 python 解释器的路径。您正在阅读的内容表明,如果它在 settings.json 中,如果设置与您在 launch.json 中的状态相同,它将被拾取。这很好,但不是我的问题。我的问题是将多个路径(外部库的路径)添加到 python 路径。就像您可以在 Eclipse 和其他编辑器中执行的操作一样。 在实际解决之前,这是一个超级 hacky 解决方法,将其添加到您的第一个 python 文件的顶部:import sys; sys.path.append('/path/to/my/pylib') 【参考方案1】:

这对我有用:-

在您的 launch.json 配置文件条目中,指定一个名为“env”的新条目,然后自己设置 PYTHONPATH。

"configurations": [
    
        "name": "Python",
        "type": "python",
        "stopOnEntry": false,
        "request": "launch",
        "pythonPath": "$config.python.pythonPath",
        "program": "$file",
        "cwd": "$workspaceRoot",
        "debugOptions": [
            "WaitOnAbnormalExit",
            "WaitOnNormalExit",
            "RedirectOutput"
        ],
        "env": 
            "PYTHONPATH": "/path/a:path/b"
        
    
]

【讨论】:

正斜杠是否也可以在 Windows 中使用?我正在使用更正的 pythonpath 运行(重新启动 VSCode 后),但仍然缺少导入。 在我将 分号 更改为 冒号 之前它不起作用 只需在 VS Code 工作区中放置一个 .env 文件,其中包含:PYTHONPATH=/path/a:/path/b 请参阅:code.visualstudio.com/docs/python/… 我很困惑,是冒号还是分号才能让它起作用? .env文件和settings.json中设置python.autoComplete.extraPaths有什么区别?【参考方案2】:

您可以将 .pth 文件添加到您的 virtualenv 的站点包目录。

对于要包含在 PYTHONPATH 中的每个模块或包,该文件的每行都应该有一个绝对路径。

https://docs.python.org/2.7/install/index.html#modifying-python-s-search-path

【讨论】:

我正在使用 miniconda3,我尝试了所有其他解决方案,这是唯一对我有用的解决方案。 仅回答在 Windows 10 上的 Python 3.8.5 中从 pytestpylint 修复的 ModuleNotFoundError【参考方案3】:

bash escamotage(适用于调试器和自动完成);需要在PATH中安装code命令(vsc shell命令:install...)

#!/bin/bash

#
# vscode python setup
#

function fvscode 
  # you just want one of this:
  export PYTHONPATH=<your python installation ../bin/python3>
  # you may want many of these:
  export PYTHONPATH=<your lib dir here>:$PYTHONPATH
  # launch vscode
  code 

alias vscode='fvscode'

通过键入“vscode”启动 VSC。

【讨论】:

【参考方案4】:

我遇到了同样的问题,ma​​lbs 在我将分号更改为冒号之前,答案对我不起作用,you can find it from ZhijiaCHEN's comments

"env":  "PYTHONPATH": "/path/to/a:/path/to/b" 

或者,我有一个 hack 方法来实现同样的目标:

# at the top of project app script:
import sys
sys.path.append('/path/to/a')
sys.path.append('/path/to/b')

【讨论】:

【参考方案5】:

VS Code 中的 Python 扩展有一个 python.envFile 设置,它指定包含环境变量定义的文件的路径(请参阅:https://code.visualstudio.com/docs/python/environments#_environment-variable-definitions-file)。默认设置为:

"python.envFile": "$workspaceFolder/.env"

所以要将外部库添加到路径中,请在工作区文件夹中创建一个名为 .env 的文件,如果您使用的是 Windows,请在其中添加以下行:

PYTHONPATH="C:\path\to\a;C:\path\to\b"

在这里指定路径的好处是自动完成和调试都可以使用这个设置本身。您可能需要关闭并重新打开 VS Code 才能使设置生效。

【讨论】:

这在 2019 年仍然有效。我补充说,如果您使用的是 pipenv,则必须将路径设置为 /User/.virtualenvs/$projectname 才能获得正确的环境已安装的库 信息:这对我有用,将 VSCode 附加到正在运行的容器;如果有人觉得这很有用:"python.pythonPath": "/usr/bin/python" & .env -> PYTHONPATH="/usr/src/my-project/a;/usr/src/my-project/b" 这是最好的方法。 .env 文件通常用于比 VS Code 更多的应用程序(和语言)。 .env 文件可以与源代码一起传播,并且仍然可以被其他引擎/IDE 识别,其中 settings.json 文件特定于 VS Code。 以这种方式导入 numpy 对我来说失败了 为我工作。谢谢你。这让我很沮丧。【参考方案6】:

根据environments doc,extension looks for environments的位置包括一些默认值以及python.venvPath在工作区settings中的设置值

例如:"python.venvPath": "~/.virtualenvs"

这使您可以找到多个(例如:virtualenvs),如上所述:

要选择特定环境,请使用 Python:选择解释器 命令面板中的命令

【讨论】:

【参考方案7】:

基于https://github.com/microsoft/vscode-python/issues/12085,我将以下内容添加到工作区配置文件的settings 部分。我正在使用 Linux。对于 Windows,请使用 terminal.integrated.env.windows

"terminal.integrated.env.linux": 
    "PYTHONPATH": "addl-path-entry1:addl-path-entry2"

我还添加了一个.env 文件,如上面许多帖子/cmets 所述。

最后,我为https://***.com/a/64103291/11262633 添加了PyLance 扩展。

我还重新加载了我的工作区。

这两项更改使我能够使用调试器和“运行”菜单运行 Python 程序。 AutoComplete 知道添加的路径,我的 VSCode linter(是默认 linter pylint,现在是 ``pylance``)现在可以工作了。

【讨论】:

这对我来说适用于 OSX,使用 "terminal.integrated.env.osx": "PYTHONPATH": "addl-path-entry1:addl-path-entry2"

以上是关于Visual Studio Code - 如何向 python 路径添加多个路径?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code,Java 扩展,如何将 jar 添加到类路径

有没有办法在Visual Studio Code中设置环境变量?

如何评价Visual Studio Code

使用 Visual Studio Code 的 Mocha 断点

Visual Studio Code 配置 Markdown

如何在Visual Studio Code 中运行 Python