为什么 ModuleNotFoundError: 没有名为“XXX”的模块,其中 XXX 是它自己

问题描述

我创建了一个 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) 下安装,则不会出现错误

解决方法

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