首页 > 解决方案 > 安装的模块返回 ModuleNotFoundError

问题描述

virtualenvwrapper用来管理一个我现在正在运行的项目

import apache_beam as beam
from apache_beam.options.pipeline_options import PipelineOptions

with beam.Pipeline(options=PipelineOptions()) as p:
    pass

这将返回以下错误

Traceback (most recent call last):
  File "path/to/pipeline.py", line 1, in <module>
    import apache_beam as beam
ModuleNotFoundError: No module named 'apache_beam'

我已经跑了pip install apache-beam。跑步pip list回报

➜ pip list  
Package                        Version
------------------------------ ---------
apache-beam                    2.23.0
avro-python3                   1.9.2.1
...

我将按照类似问题中的建议添加以下输出。

pip freeze

➜ pip freeze
apache-beam==2.23.0
avro-python3==1.9.2.1
...

pip -V

➜ pip -V    
pip 20.2.2 from /Users/miguel/.virtualenvs/myenv/lib/python3.7/site-packages/pip (python 3.7)

python -V

➜ python -V        
Python 3.7.3

which python

➜ which python
/Users/miguel/.virtualenvs/myenv/bin/python

which pip

➜ which pip   
/Users/miguel/.virtualenvs/myenv/bin/pip

我不知道这是否相关,但我正在使用 VSCode,并且我已根据此处的 VSCode 说明选择了我的 python 解释器。此外,我按照此处的说明安装了 python 。

知道为什么会这样吗?

标签: pythonvisual-studio-codevirtualenvwrapper

解决方案


首先测试您安装的 Python 模块是否在 VSCode 之类的 ide 之外工作。我们可以通过打开终端/命令提示符并激活我们的虚拟环境来做到这一点。在这种情况下,当您使用virtualenvwrapper时,您需要使用以下命令:

workon myenv

virtualenvwrapper的文档可以在这里找到。激活后,我们可以使用以下命令在终端中打开 Python 解释器:

python

运行后,尝试像使用之前一样导入 apache_beam:

import apache_beam as beam

如果这可行,我们现在知道这是使用 VSCode 设置虚拟环境的问题。要在 VSCode 中为 Python 设置虚拟环境,请使用官方文档Using Python environment in VS Code。这应该允许您指定虚拟环境。

如果这不起作用,另一种选择是在 VSCode 中创建一个新的虚拟环境并安装你的模块。在 VSCode 中将模块安装到环境中可以在您在帖子中链接到的 VSCode 说明中找到。

我尝试使用以下方法重新创建您的问题:

  • Python 3.7.7
  • VSCode 1.48.0
  • 阿帕奇光束 2.23.0

我的虚拟环境被命名为“堆栈”。一旦我创建了它,我安装的唯一模块就是 apache-beam 使用:

pip install apache-beam

创建项目时,我创建了目录并使用以下命令通过终端启动:

 - mkdir hello
 - cd hello
 - code .

然后通过以下命令添加 Python 解释器:

Python: Select Interpreter

我需要的另一个步骤(因为我通常使用 PyCharm for Python)是安装:

Shell Command: Install 'code' command in PATH** command.

允许通过终端启动代码。以下是执行这些步骤并运行与您的问题中发布的相同命令以供参考后的项目屏幕截图。

在此处输入图像描述

我的 .vscode/settings.json 如下:

{
    "python.pythonPath": "/Users/robertyoung/envs/stack/bin/python"
}

推荐阅读