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 中从pytest
和 pylint
修复的 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】:我遇到了同样的问题,malbs 在我将分号更改为冒号之前,答案对我不起作用,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 的 Mocha 断点