【问题标题】:Getting "ModuleNotFoundError: No module named 'Pillow'" in VS Code在 VS Code 中获取“ModuleNotFoundError: No module named 'Pillow'”
【发布时间】:2020-09-21 01:56:45
【问题描述】:

我在虚拟环境中安装了 Pillow 模块:

(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 解释器与终端版本相同:

$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'

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

【问题讨论】:

  • 你先激活环境了吗?
  • 是的。按源 venv/bin/activate
  • @GinoMempin,尝试了链接,但它对我不起作用。
  • 这里要清楚一点,你的venv名字也是"venv"? (基于 VS Code 图像)。另外,你为什么要指定从 venv 到 python 的完整路径? (../venv/bin/python) 如果 venv 被激活,那么 python 应该可以工作。

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


【解决方案1】:

没有类似的命令:-

from Pillow import Image

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

所以,尝试使用:-

from PIL import Image

它对我有用。 :)

【讨论】:

  • 我仍然收到错误ModuleNotFoundError: No module named 'PIL'
  • 你能不能导入其他的模型,比如json、sqlite3等。如果不能,请尝试重新安装python解释器,因为它应该可以使用“import PIL”。
  • 我可以导入json
  • 尝试进入安装了所有python模块的python目录,并尝试找到名为“PIL”的目录。如果它不存在,则使用 pip 删除并重新安装包。希望它有效!
  • 尝试去 /mnt/d/github/python_dev/venv/lib/python3.8/site-packages@DavidZ
【解决方案2】:

没有魔法。每次发生这种情况你都可以自己调试:

(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

如果没有枕头,那么你的安装有问题。 检查您是否激活了当前的 venv。

所以答案:

from PIL import Image

【讨论】:

  • 谢谢!我可以通过 grep 或 find 找到这些包,但仍然是同样的错误
  • 尝试在 venv 激活时通过打印 python 打开 shell 并从中执行 import。有用吗?
  • 如果 Pillow 在 pip list 输出中,也可以尝试重新加载 vscode 或禁用一些插件进行测试。
  • 我可以在终端中运行$python images.py,但不能通过 vs 代码..太奇怪了..
  • 先打开python shell,然后在vs代码中试试这个import sys, print(sys.path)。那里有site-packages 的路径吗?
【解决方案3】:

你似乎有两个问题:

  1. 从你原来的问题来看,没有from Pillow import Image
    • Pillow 的文档中所述,它应该是旧的PIL 模块的一个分支
    • 如 Pillow 的 Tutorial 文档中所示,正确的导入与 PIL 的相同:
      >>> from PIL import Image
      >>> im = Image.open("hopper.ppm")
      
  2. 根据 cmets 和您的回复,您的虚拟环境中未正确安装 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 中创建名为 venv 的 venv(same as yours 并使用 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
  5. 关闭并重新打开终端
    • VS Code 应在重新打开终端时自动激活您选择的 venv
    • 您也可以手动激活 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. 现在您的脚本应该可以运行了
    • 正如我在 cmets 中提到的,一旦激活了 venv,就无需指定 python 解释器的完整路径。 python 应该没问题。

【讨论】:

  • 我从 #1 到 #7 做的每一件事都是一样的,除了 #8 之外的所有工作都正常
猜你喜欢
  • 2021-06-04
  • 2022-01-12
  • 2022-12-27
  • 2022-12-27
  • 2022-12-19
  • 1970-01-01
  • 2021-03-09
  • 2021-09-07
  • 2022-12-27
相关资源
最近更新 更多