【问题标题】:Why ModuleNotFoundError: No module named 'XXX', Where XXX is Itself [closed]为什么 ModuleNotFoundError:没有名为“XXX”的模块,其中 XXX 本身 [关闭]
【发布时间】:2021-06-10 07:46:34
【问题描述】:

我创建了一个 python 包并将其托管在我自己的 GitHub 存储库中。当我从 GitHub 进行 pip install 时,收到以下错误:

Getting requirements to build wheel ... error
...
ModuleNotFoundError: No module named 'XXX'

XXX 是我尝试安装的软件包的名称。这对我来说没有意义。有人可以对此有所了解吗?

编辑 1: 我设法找到了一个表现出这种行为的永久存储库。请尝试以下操作:

pip install https://github.com/rm-hull/luma.core/archive/master.zip
pip install https://github.com/rm-hull/luma.oled/archive/master.zip

为了重现错误,您必须按上述顺序执行 pip 命令(如果先执行第二个 pip 命令,则不会产生错误)。最后一个 pip 产生如下错误:

...
ModuleNotFoundError: No module named 'luma.oled'

我正在使用在 Win10 上运行的 Python 3.7.9、pip 21.0.1、setuptools 54.1.1。

注意:...的地方有一长串错误信息。

编辑 2: 这是安装luma.oled时的完整错误:

Collecting https://github.com/rm-hull/luma.oled/archive/master.zip
  Using cached https://github.com/rm-hull/luma.oled/archive/master.zip
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  ERROR: Command errored out with exit status 1:
   command: 'c:\users\user\appdata\local\programs\thonny\python.exe' 'c:\users\user\appdata\local\programs\thonny\lib\site-packages\pip\_vendor\pep517\_in_process.py' get_requires_for_build_wheel 'C:\Users\user\AppData\Local\Temp\tmphvzewynk'
       cwd: C:\Users\user\AppData\Local\Temp\pip-req-build-5w6wbo9g
  Complete output (48 lines):
  Traceback (most recent call last):
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 387, in _parse_attr
      return getattr(StaticModule(module_name), attr_name)
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 25, in __init__
      with open(spec.origin) as strm:
  AttributeError: 'NoneType' object has no attribute 'origin'

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "c:\users\user\appdata\local\programs\thonny\lib\site-packages\pip\_vendor\pep517\_in_process.py", line 280, in <module>
      main()
    File "c:\users\user\appdata\local\programs\thonny\lib\site-packages\pip\_vendor\pep517\_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "c:\users\user\appdata\local\programs\thonny\lib\site-packages\pip\_vendor\pep517\_in_process.py", line 114, in get_requires_for_build_wheel
      return hook(config_settings)
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\build_meta.py", line 150, in get_requires_for_build_wheel
      config_settings, requirements=['wheel'])
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\build_meta.py", line 130, in _get_build_requires
      self.run_setup()
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\build_meta.py", line 145, in run_setup
      exec(compile(code, __file__, 'exec'), locals())
    File "setup.py", line 7, in <module>
      setuptools.setup()
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\__init__.py", line 153, in setup
      return distutils.core.setup(**attrs)
    File "c:\users\user\appdata\local\programs\thonny\lib\distutils\core.py", line 121, in setup
      dist.parse_config_files()
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\dist.py", line 708, in parse_config_files
      ignore_option_errors=ignore_option_errors)
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 157, in parse_configuration
      meta.parse()
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 463, in parse
      section_parser_method(section_options)
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 436, in parse_section
      self[name] = value
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 220, in __setitem__
      value = parser(value)
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 552, in _parse_version
      version = self._parse_attr(value, self.package_dir)
    File "C:\Users\user\AppData\Local\Temp\pip-build-env-_xeaivwi\overlay\Lib\site-packages\setuptools\config.py", line 390, in _parse_attr
      module = importlib.import_module(module_name)
    File "c:\users\user\appdata\local\programs\thonny\lib\importlib\__init__.py", line 127, in import_module
      return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
    File "<frozen importlib._bootstrap>", line 983, in _find_and_load
    File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
  ModuleNotFoundError: No module named 'luma.oled'
  ----------------------------------------
WARNING: Discarding https://github.com/rm-hull/luma.oled/archive/master.zip. Command errored out with exit status 1: 'c:\users\user\appdata\local\programs\thonny\python.exe' 'c:\users\user\appdata\local\programs\thonny\lib\site-packages\pip\_vendor\pep517\_in_process.py' get_requires_for_build_wheel 'C:\Users\user\AppData\Local\Temp\tmphvzewynk' Check the logs for full command output.

config.pysetuptools 触发的两个错误。但是如果安装在 Raspbian GNU/Linux 10 (buster) 下没有遇到错误。

【问题讨论】:

  • 嗨@kaosad,你能分享更多信息吗?你的仓库,你如何存储你的包,你的配置,......
  • 我不确定在此处放置指向我的仓库的链接是否合适,因为它不是永久性的。请指教。
  • 至少共享你的包配置文件,即pyproject.toml、setup.py等
  • 嗯..我在我的环境下遇到了这个错误。我正在使用 Python 3.7.9、pip 21.0.1、setuptools 54.1.1
  • 嗯.. 好吧,我似乎太早说了不可重现,对此感到抱歉。但似乎还有其他部分的错误。您刚刚发布了最后一行,但实际上顶部有一个“AttributeError: 'NoneType' object has no attribute 'origin'”,这似乎是 main 异常。它未能为其中一个依赖项构建轮子,因此无法成功安装 luma.oled。如果您可以发布错误消息的其他部分和可重现的示例(不是来自 github 链接),那就更好了。可能与依赖项或设置配置有关。

标签: python python-3.x pip python-3.7 setuptools


【解决方案1】:

需要更多细节才能准确回答,但是您是否有机会从setup.py 中的自己的模块中导入某些内容?由于这是安装过程,它无法访问它尝试安装的代码

【讨论】:

  • 我认为这很好作为评论,而不是作为答案。
  • 这绝对是一个答案。可能不适合这个提问者,它当然不能涵盖所有可能性,但仍然是一个答案。对于遇到此问题的任何未来访问者来说显然很有用。
  • 我同意它对未来的访问者很有用,但它仍然是一个评论。未来的访问者可以阅读 cmets。
  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • 是措辞有问题吗?我说的是“从 setup.py 中删除 import XXX(如果有的话)”。可能不是每次出现这个问题都适用,但也可以很好的解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-07
  • 2018-10-22
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多