使用 PEP582 和 ipykernel 搜索路径的 VSCode 设置

李岡諭*_*李岡諭 4 pep visual-studio-code

我使用支持PEP582的 python 包管理器(PyFlow/PDM) :包安装在本地目录中{workspace_path}/__pypackages__/

我添加了一些配置来settings.json让 VSCode 知道如何找到包:

{
  ...,
  "python.autoComplete.extraPaths": [
    "__pypackages__/3.7lib"
  ],
  "python.analysis.extraPaths": [
    "__pypackages__/3.7/lib"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我编写了一些代码,完成和内联代码文档与上述设置配合得很好。

# main.py
#%% jupyter cell
import sys
print(sys.path)
import pandas as pd
print(pd.__version__)
#%% 
print("hello world")
Run Code Online (Sandbox Code Playgroud)

main.py以两种方式运行:

  • 使用 VSCode 运行该文件 ( ctrl + opt + N)
  • 使用 ipykernel ( )运行jupyter 单元shift + enter。VSCode 第一次要求我安装 ipykernel,但它安装了pip,而不是安装到__pypackages__.

但它失败并显示:ModuleNotFoundError: No module named 'pandas'

我用 检查搜索路径sys.path,它不包含__pypackages__python 模块:

['{$HOME}/{workspace}',
 '{$HOME}/.vscode/extensions/ms-toolsai.jupyter-2021.5.745244803/pythonFiles',
 '{$HOME}/.vscode/extensions/ms-toolsai.jupyter-2021.5.745244803/pythonFiles/lib/python',
 '{$HOME}/.pyenv/versions/3.7.10/lib/python37.zip',
 '{$HOME}/.pyenv/versions/3.7.10/lib/python3.7',
 '{$HOME}/.pyenv/versions/3.7.10/lib/python3.7/lib-dynload',
 '',
 '{$HOME}/{workspace}/.venv/lib/python3.7/site-packages',
 '{$HOME}/{workspace}/.venv/lib/python3.7/site-packages/IPython/extensions',
 '{$HOME}/.ipython']
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 如何配置为 Python 模块settings.json添加搜索路径 ( )。__pypackages__/3.7lib
  • 如何配置settings.json让 VSCode Jupyter 服务器启动安装有 ipykernel 的 IPython__pypackages__/3.7lib

Noe*_*cob 6

"python.autoComplete.extraPaths": [
        "${workspaceFolder}/__pypackages__/<major.minor>/lib"
    ],
    "python.analysis.extraPaths": [
        "${workspaceFolder}/__pypackages__/<major.minor>/lib"
    ],
Run Code Online (Sandbox Code Playgroud)

在 settings.json 中尝试这个

将 <major.minor> 替换为您的 python 版本,例如 3.10、3.9 等