在 Visual Studio Mac OS 代码中使用 Homebrew python3 和 pip/pip3 包

Using Homebrew python3 with both homebrew packages and pip/pip3 packages in Visual Studio Code for Mac OS

我目前正在尝试在 Mac OSX 10.13.6 上设置 Visual Studio 代码,以便在 python3 中进行编码。我想避免为不同的 python3 脚本使用多个虚拟环境,而是让它们全部 运行 使用:

(1) homebrew 安装 python3

(2) 访问已安装的 python 软件包:

首先,我首先使用homebrew安装了python3

$ brew info python
python: stable 3.7.7 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.7.7 (4,062 files, 62.4MB)
...
Python has been installed as
  /usr/local/bin/python3
...
You can install Python packages with
  pip3 install <package>
They will install into the site-package directory
  /usr/local/lib/python3.7/site-packages

其次,我使用 homebrew:

安装了我需要的包
$ brew list
cmake           libffi          p11-kit
dcraw           libheif         pandoc
dlib            libidn2         pcre
...
jasper          numpy           webp
...

和其他使用 pippip3 的软件包:

$ pip list
DEPRECATION:...
Package                                Version 
-------------------------------------- --------
altgraph                               0.10.2  
...
numpy                                  1.8.0rc1
...
zope.interface                         4.1.1  
$
$ pip3 list
Package            Version
------------------ -------
appnope            0.1.0  
... 
numpy              1.18.2 
pandocfilters      1.4.2  
parso              0.5.2  
pexpect            4.7.0  
pickleshare        0.7.5  
pip                20.0.2 
pomegranate        0.12.2 
...
scipy              1.4.1  

第三,我打开了 Visual Studio 代码并在 "Preferences" -> "Settings" 中将 "Python:Python Path" 设置为 homebrew python3 安装为上面提到 /usr/local/bin/python3

看这个截图:

接下来,我根据 homebrew 安装 python3 添加 /usr/local/lib/python3.7/site-packages 到 Visual Studio 代码设置文件,使用:

"python.autoComplete.extraPaths": [
    "/usr/local/lib/python3.7/site-packages" ]

最后,我在 Visual Studio 代码中选择了我的 python 解释器 /usr/local/bin/python3 并尝试 运行 [=41= 中的以下 2 行导入] 脚本按照下面的屏幕截图。注意解释器是VS Code左下角给出的Python 3.7.0 64-bitwindow.

所有这一切之后,在单击 "Play" 按钮到 运行 VS Code 右上角的代码后,最终得到了这个输出:

[Running] python -u "/Users/...bayes_net_nodes.py"
Traceback (most recent call last):
  File "/Users/...bayes_net_nodes.py", line 1, in <module>
    import numpy as np
ModuleNotFoundError: No module named 'numpy'

[Done] exited with code=1 in 0.037 seconds

配置 VS Code 的最简单方法是什么,这样我就可以 运行 python3 脚本访问我在系统中安装的所有包,而无需使用虚拟环境?谢谢!

注意:一种似乎可行的解决方法,我不确定为什么如果我在我的脚本顶部放置一个 shebang #! /usr/local/bin/python3 然后我的输出看起来像这样:

[Running]  /usr/local/bin/python3 "/Users/...bayes_net_nodes.py"

[Done] exited with code=0 in 0.051 seconds

这很奇怪,因为这与上面我没有使用 shebang 的输出不同,但是根据 VSCode 的两个 python 解释器确实是 /usr/local/bin/python3

我能够重现你的问题..但是只有当我使用 Code Runner 到 运行.

那些带有 [Running][Done] 的输出日志 Code Runner。
播放按钮也不是绿色的,说明Code Runner因为默认是绿色的。

现在,进行修复!

您会注意到它使用 python -u 执行了您的脚本。 python 就是 python 在你的系统上的意思,对我来说是默认的 Python 2.7。基本上,这不是你的 Homebrew Python3 with numpy.

Code Runner 有一组默认的 "executors",它告诉它针对哪种语言使用哪个可执行文件。在您的设置中搜索 "code-runner Executor Map":

打开你的 settings.json,输入 code-runner.executorMap,然后让它使用默认值自动完成。然后你会看到一长串语言和执行者之间的映射。寻找 python:

    "code-runner.executorMap": {
        "javascript": "node",
        ...
        "python": "python -u",
        "perl": "perl",
        ...
    }

它就在那里:python -u,与 运行 您的脚本使用的相同。

如果您想继续使用 Code Runner,只需将其更改为您想要使用的 python 解释器即可。在你的情况下,它应该是 /usr/local/bin/python3:

    "code-runner.executorMap": {
        ...
        "python": "/usr/local/bin/python3",
        ...
    }

它现在应该可以工作了:

它使用 #! /usr/local/bin/python3 shebang 的原因是因为 Code Runner 有一个设置,它尊重文件的 shebang (code-runner.respectShebang),默认情况下为真。

如果您不想设置 Code Runner 的这个额外步骤,您可以简单地禁用(或卸载它)。您已经执行的所有步骤(设置 python.pythonPath、选择解释器并单击播放按钮)在 Microsoft 的 Python extension. See the official docs on running Python files, selecting environments, and debugging.

中已经可以正常工作了