【问题标题】:pip isn't recognizing PILpip 无法识别 PIL
【发布时间】:2021-04-07 14:56:26
【问题描述】:

这是一个非常均衡的问题。我正在使用 pdoc 为我的库创建一些文档,该库使用 PIL 进行图像处理。一切正常,除了使用 PIL 的模块,它抛出了以下内容

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pdoc/doc.py", line 400, in submodules
    module = extract.load_module(mod.name)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/contextlib.py", line 75, in inner
    return func(*args, **kwds)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pdoc/extract.py", line 221, in load_module
    raise RuntimeError(f"Error importing {module}") from e
RuntimeError: Error importing timmaldFunctions.setup

  warnings.warn(
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pdoc/doc.py:402: RuntimeWarning: Couldn't import timmaldFunctions.imageStuff:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pdoc/extract.py", line 219, in load_module
    return importlib.import_module(module)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ModuleNotFoundError: No module named 'PIL'

尽管我运行过一次,但它多次抛出该异常。只是为了检查,我用了pip3.9 show PIL,它说WARNING: Package(s) not found: PIL。但是,我在 PyCharm 中多次使用 PIL.Image,总是使用 python 3.9,就像我在这个库中使用的一样。我查看了/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages 并在那里找到了 PIL。然后我确保该站点包路径位于sys.path 中,并且确实如此。我尝试使用 Pillow(PIL 的一个分支),并确保我有一个与 python3.9 兼容的版本(我有 8.1)。但是,即使我通过 PyCharm 和 pip3.9 install Pillow 以及 pip3.9 install pillow 中的自动安装都安装了软件包。 pip3.9 show Pillow 和 pip3.9 show pillow 说它存在并且有正确的版本。但是,PyCharm 仍然装作没有安装,并抛出了ModuleNotFoundError: No module named 'Pillow'。我也了解到PIL和pillow不能在同一个环境,所以我尝试了pip3.9 uninstall PIL,但是pip认为这个包一开始就没有存在过。在我看来,我有 2 个选项:让 pdoc 和 pip 识别 PIL,或 让 Python 识别 Pillow。我该怎么做,还是有其他选择?提前致谢,如果您需要更多信息,请告诉我!

更新:

我使用给出的答案中的命令创建了一个 venv,然后我找到了名为 activate 的 venv 文件(无扩展名),并在终端中输入以下内容:source path-to-activate,此时 venv 的名称出现在每个新终端行开头后面的括号中。然后我进入 PyCharm 的解释器设置并在 PyCharm 上创建了一个新环境,选择“现有环境”,然后放入 venv 文件夹/bin/python3.9 的路径(这是指向真正 python3.9 的别名) .它以它所在的项目命名该设置。我在解释器选项中切换到该设置。然后我从终端(仍在使用 venv)运行pip3.9 install pillow,同时使用 pip 和 pip3.9,并将它们替换为新 venv 中的路径。每次我收到要求已经满足的消息,确保安装了枕头。我还检查了站点包,PIL 和 Pillow-dist-info 都在那里。 PyCharm 没有出错,所以它工作正常。但是,当我运行 pdoc path-to-library-folder(仍在 venv 中)时,它抛出了完全相同的错误。我做错了什么吗?

【问题讨论】:

  • PyCharm 在运行配置中是否使用与 pip3.9 相同的解释器?
  • 安装 Pillow 时,它会显示为 PIL,例如import PIL.
  • @PeterWood 您的第二条评论很有帮助,如果我再次尝试 pdoc,它可能会起作用。对于您的第一条评论,pip3.9 是一个终端别名或类似的东西(据我所知,它与 python3.9 一起提供)代表为 Python3.9 安装一个包,因为我的系统默认 python 版本是 2.7,所以必须指定。 PyCharm 使用的是 Python 3.9。那应该是同一件事,但我不确定哪个解释器实际上正在运行 pip3.9。有没有办法检查?
  • 如果你不使用 PyCharm 安装唤起 pip 的最佳方法是使用 python -m pip。你只需要知道你使用的是哪个python。为此,请先激活 venv python。

标签: python python-3.x pip pdoc


【解决方案1】:

我该怎么做,还是有其他选择?

一般来说,对于开源项目,我会检查他们的存储库,看看哪个有最近的提交/活动。在您的情况下,PIL 的最后一次提交是在 10 年前,9 个分叉,9 个星和 0 个观察者,而 pillow 的最后一次提交是 6 小时前,1.6k 个分叉,8.4k 个星和 216 个观察者。虽然这不是一个完美的指标,但它是一个经验法则。

如何进行?从头开始:

  1. 使用 python3 -m venv nathans_new_venv 创建一个新的 venv 并激活它,获取其激活行。
  2. 现在,pip3.9 安装枕头或 nathans_new_venv/bin/pip 安装枕头

在 nathans_new_venv 点 pycharm,你应该是金色的。

【讨论】:

  • 非常感谢!我认为你的回答至少让我非常接近。我在我的问题中发布了更新。你能检查一下,确保我没有做错任何事吗?
  • 您可能需要在 nathans_new_venv 中进一步安装 pdoc
  • 我认为它在那里,我总是可以尝试不同的命令变体并确保它是最新的
  • 它不存在,所以我安装了它,当它存在时,发生了完全相同的事情。
  • 这不是尝试不同的命令变体...激活 venv 或使用完整路径,它会总是找到正确的二进制文件
【解决方案2】:

这适用于我的 PyCharm 问题:

python3.9 -m pip install pillow --upgrade

【讨论】:

    猜你喜欢
    • 2015-07-03
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2016-06-01
    • 2020-08-02
    • 2012-10-04
    • 2021-02-12
    相关资源
    最近更新 更多