在VS代码中获取“ ModuleNotFoundError:没有名为“枕头”的模块”

时间:2020-09-21 01:56:45

标签: python python-3.x visual-studio-code python-imaging-library

我将枕头模块安装在虚拟环境中,如下所示:

(venv)$python -m pip install --upgrade Pillow 
Collecting Pillow
  Downloading Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 2.4 MB/s 
Installing collected packages: Pillow
Successfully installed Pillow-7.2.0

VS Code解释器与终端版本相同:

enter image description here

$python --version
Python 3.8.0
$ which python
/mnt/d/github/python_dev/venv/bin/python

但是当我运行from Pillow import Image时,我仍然得到ModuleNotFoundError

$ ../venv/bin/python images.py 
Traceback (most recent call last):
  File "images.py", line 1, in <module>
    from PIL import Image
ModuleNotFoundError: No module named 'Pillow'

我知道有很多关于该主题的帖子,但是我仍然停留在这里将近半天。修复它的最佳方法是什么?

3 个答案:

答案 0 :(得分:0)

没有类似以下的命令:-

from Pillow import Image

Python喜欢将Pillow模块导入为PIL。

因此,请尝试使用:-

from PIL import Image

对我有用。 :)

答案 1 :(得分:0)

没有魔术。每次发生这种情况时,您都可以自己调试它:

(venv) etoneja@ois ~/Projects/***/venv/lib (master)$ grep -r -w "class Image"
python3.8/site-packages/PIL/Image.py:class Image:

(venv) etoneja@ois ~/Projects/***/venv/lib (master)$ find . -iname "Pil"
./python3.8/site-packages/PIL

还要检查此输出

(venv) etoneja@ois ~/Projects/***/venv/lib (master)$ pip list
Package       Version
------------- --------
Pillow        7.1.2

如果没有枕头,则说明您的安装有问题。 检查您是否激活了当前的静脉。

答案是

from PIL import Image

答案 2 :(得分:0)

您似乎有2个问题:

  1. 从您最初的问题来看,没有from Pillow import Image
    • Pillow的文档中所述,它应该是旧的PIL模块的分支
    • 如Pillow的Tutorial文档中所示,正确的导入与PIL的相同:
      >>> from PIL import Image
      >>> im = Image.open("hopper.ppm")
      
  2. 从评论和您的答复中,您的虚拟环境中未正确安装Pillow,或者您的虚拟环境未正确激活。

看到您的问题是针对VS Code的,这是解决问题2的逐步方法。

  1. 在VS Code中,打开一个终端并创建您的venv
    cerberus@test$ python3.8 -V
    Python 3.8.5
    cerberus@test$ python3.8 -m venv ~/.venvs/venv
    
    • 在这里,我正在~/.venvs中创建名称为venvsame as yours的venv,并使用Python 3.8(您可以在任意位置存储venv目录)
    • 测试它是否可以正确激活并使用正确的Python版本
    cerberus@test$ source ~/.venvs/venv/bin/activate
    (venv) cerberus@test$ python -V
    Python 3.8.5
    
    • 当您的提示前面带有(venv-name)
    • 时,您将知道它已被激活。
  2. 重新加载VS代码
    • 创建新的虚拟环境时,我发现最好先重新加载VS Code,然后它才能“看到”它。
    • 您还可以在VS Code之外创建venv,然后在打开VS Code之后
  3. 重新加载后,打开命令面板并执行Python: Select Interpreter
  4. 从列表中找到您创建的venv
    enter image description here
  5. 关闭并重新打开终端
    • VS Code重新打开终端时,应自动激活您选择的venv enter image description here
    • 您还可以手动激活venv
      cerberus@test$ source ~/.venvs/venv/bin/activate
      (venv) cerberus@test$ 
      
  6. 一旦有了VS Code即可使用并激活正确的venv,请安装Pillow
    (venv) cerberus@test$ python -V
    Python 3.8.5
    (venv) cerberus@test$ python -m pip install Pillow
    Collecting Pillow
      Using cached Pillow-7.2.0-cp38-cp38-macosx_10_10_x86_64.whl (2.2 MB)
    Installing collected packages: Pillow
    Successfully installed Pillow-7.2.0
    
  7. 测试安装
    (venv) cerberus@test$ python
    Python 3.8.5 (default, Jul 21 2020, 10:48:26) 
    [Clang 11.0.3 (clang-1103.0.32.62)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from PIL import Image
    >>>
    >>> import PIL
    >>> PIL.__path__
    ['/Users/cerberus/.venvs/venv/lib/python3.8/site-packages/PIL']
    
  8. 现在您的脚本应该可以工作了 enter image description here
    • 正如我在评论中提到的,一旦激活了venv,就无需指定python解释器的完整路径。只需python就可以了。