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

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

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

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

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

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

谢谢

【问题讨论】:

  • @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')

标签: python visual-studio-code


【解决方案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 docextension 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://stackoverflow.com/a/64103291/11262633 添加了PyLance 扩展。

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

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

        【讨论】:

        • 这对我来说适用于 OSX,使用 "terminal.integrated.env.osx": { "PYTHONPATH": "addl-path-entry1:addl-path-entry2" }
        猜你喜欢
        • 2021-08-24
        • 2018-10-18
        • 1970-01-01
        • 1970-01-01
        • 2021-05-07
        • 2021-02-19
        • 2020-07-03
        • 2019-03-20
        • 2020-06-16
        相关资源
        最近更新 更多