ModuleNotFoundError:没有名为“ my_module”的模块

时间:2019-11-08 09:40:23

标签: python

我有一个自定义模块已编写,安装时遇到问题。这是模块的结构。

├── my_module
│   ├── .git
│   │   ├── <..>
│   ├── build
│   │   ├── <..>
│   ├── class_a
│   │   ├── __init__.py
│   │   ├── class_a_name.py
│   ├── class_b
│   │   ├── __init__.py
│   │   ├── class_b_name.py
│   ├── dist
│   │   ├── <..>
│   ├── my_module.egg.info
│   │   ├── <..>
│   ├── setup.py
│       ├── .gitignore

它存储在C:\Users\my_name\repos\my_module中。

要安装该模块,请在anaconda提示符下使用命令setup.py运行python setup.py install

如果我导航到C:\Users\my_name\AppData\Local\Continuum\anaconda3\Lib\site-packages\my_module-0.2-py3.7.egg

,则在运行时

.egg文件存在,并且似乎已安装我的模块。

但是,当我尝试在spyder中或通过命令提示符使用模块时,会得到:

ModuleNotFoundError: No module named 'my_module'

与主题上的许多其他问题一样,我不认为这是一个路径问题。

预先感谢,乐于阐述。

1 个答案:

答案 0 :(得分:2)

这是一个路径问题。 (是的,设置正确的路径确实很烦人)

正确的导入路径如下:

├── my_module
│   ├── .git
│   │   ├── <..>
│   ├── build
│   │   ├── <..>
│   │   my_module         <-- NEW
│   │   ├── __init__.py   <-- NEW
│   │   ├── class_a
│   │   │   ├── __init__.py
│   │   │   ├── class_a_name.py
│   │   ├── class_b
│   │   │   ├── __init__.py
│   │   │   ├── class_b_name.py
│   ├── dist
│   │   ├── <..>
│   ├── my_module.egg.info
│   │   ├── <..>
│   ├── setup.py

请注意,这将在模块的实际安装中排除builddist。如果不想的话,将它们上移。

这可以通过向外移动setup.py而不是创建新文件夹来完成,但这取决于您。