0

这是一个非常平的问题。我正在使用 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)。但是,即使我通过 PyCharmpip3.9 install Pillowpip3.9 install pillow. pip3.9 show Pillowpip3.9 show pillow说它存在并且有正确的版本。但是,PyCharm 仍然表现得像没有安装一样,并抛出ModuleNotFoundError: No module named 'Pillow'. 我也了解到 PIL 和枕头不能在同一个环境中,所以我尝试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 的别名) . 它以它所在的项目命名该设置。我在解释器选项中切换到该设置。然后我跑了pip3.9 install pillow来自终端(仍在使用 venv),同时使用 pip 和 pip3.9 并用新 venv 中的路径替换它们。每次我收到要求已经满足的消息时,都会确保安装了枕头。我还检查了站点包,PIL 和 Pillow-dist-info 都在那里。PyCharm 没有出错,所以它工作正常。但是,当我运行时pdoc path-to-library-folder(仍在 venv 中),它抛出了完全相同的错误。我做错了什么吗?

4

2 回答 2

1

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

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

如何进行?从头开始:

  1. 创建一个新的 venvpython3 -m venv nathans_new_venv并通过获取它的激活线来激活它。
  2. 现在,pip3.9 安装枕头或 nathans_new_venv/bin/pip 安装枕头

将 pycharm 指向 nathans_new_venv,你应该是金色的。

于 2021-04-07T15:09:50.613 回答
0

这适用于我的 PyCharm 问题:

python3.9 -m pip install pillow --upgrade
于 2021-10-17T19:44:57.673 回答