在 Mac OS 的 Visual Studio Code 中将 Homebrew python3 与 homebrew 包和 pip/pip3 包一起使用

Beg*_*uly 7 homebrew python-3.x visual-studio-code

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

(1)同样homebrew安装python3

(2) 访问已安装的Python包:

  • homebrew包裹清单
  • pip3已安装的包列表
  • pip已安装的软件包列表。

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

$ 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
Run Code Online (Sandbox Code Playgroud)

其次,我使用以下命令安装了所需的软件包homebrew

$ brew list
cmake           libffi          p11-kit
dcraw           libheif         pandoc
dlib            libidn2         pcre
...
jasper          numpy           webp
...
Run Code Online (Sandbox Code Playgroud)

以及其他使用pipand的包pip3

$ 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  
Run Code Online (Sandbox Code Playgroud)

第三,我打开 Visual Studio Code 并在“首选项”->“设置”中设置"Python:Python Path"homebrew python3如上所述的安装/usr/local/bin/python3

看这个截图: Python:Python路径

接下来,我使用以下命令将/usr/local/lib/python3.7/site-packages每个homebrew安装添加python3到 Visual Studio Code 设置文件中:

"python.autoComplete.extraPaths": [
    "/usr/local/lib/python3.7/site-packages" ]
Run Code Online (Sandbox Code Playgroud)

最后,我在 Visual Studio Code 中选择了 python 解释器,并尝试按照下面的屏幕截图/usr/local/bin/python3在脚本中运行以下两行导入。.py请注意,解释器Python 3.7.0 64-bit由 VS Code 窗口的左下角给出。

VS 代码截图

所有这些之后,单击“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
Run Code Online (Sandbox Code Playgroud)

配置 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
Run Code Online (Sandbox Code Playgroud)

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

Gin*_*pin 3

我能够重现您的问题..但只有当我使用 Code Runner运行时。

在此输入图像描述

这些类型的输出日志[Running]Code Runner。[Done]
播放按钮也不是绿色的,表示 Code Runner,因为默认为绿色。

现在,进行修复!

您会注意到它使用 执行您的脚本python -u。这python将是python你的系统上的任何方式,对我来说这是默认的 Python 2.7。基本上,它不是带有 numpy 的 Homebrew Python3。

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

在此输入图像描述

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

    "code-runner.executorMap": {
        "javascript": "node",
        ...
        "python": "python -u",
        "perl": "perl",
        ...
    }
Run Code Online (Sandbox Code Playgroud)

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

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

    "code-runner.executorMap": {
        ...
        "python": "/usr/local/bin/python3",
        ...
    }
Run Code Online (Sandbox Code Playgroud)

现在应该可以工作了:

在此输入图像描述

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

如果您不需要设置 Code Runner 的这个额外步骤,您可以简单地禁用(或卸载它)。您已经执行的所有步骤(设置、选择解释器并单击“播放”按钮)都可以与 Microsoft 的Python 扩展python.pythonPath配合良好。请参阅有关运行 Python 文件选择环境调试的官方文档。