AttributeError: module 'MyModule' has no attribute 'Module1'
AttributeError: module 'MyModule' has no attribute 'Module1'
我正在尝试将我的一个项目变成一个包,这样我就可以将它部署为一个轮子。
我有一个这样的项目目录设置:
ProjectDir
├── setup.py
├── MyModule
│ ├── __init__.py
│ ├── Module1
│ │ ├── __init__.py
│ │ ├── main.py
│ ├── Module2
│ │ ├── file1.py
│ │ ├── __init__.py
│ │ ├── file2.py
│ │ ├── file3.py
│ └── Module3
│ ├── __init__.py
│ ├── Sub1
│ │ ├── file1.py
│ │ ├── file2.py
│ │ ├── main.py
│ └── Sub2
│ ├── file1.py
│ ├── main.py
└── test
├── test_Module_1
│ ├── __init__.py
│ └── test_main.py
├── test_Module_2
...
顶级 __init__.py 为空
模块 1 __init__.py 文件
from main import Function1
与其他模块 __init__.py 文件类似
setup.py
from setuptools import setup, find_packages
import os
import pip
setup(name='MyModule',
description='Tool suite to run MyModule',
packages=['MyModule'])
我可以导入 MyModule,但是当我尝试访问任何子模块时,我得到以下信息
AttributeError: module 'MyModule' has no attribute 'Module1'
Or if I check attributes of my module, none are found.
import MyModule
dir(MyModule)
['builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'path', 'spec', 'os']
这是预料之中的,因为默认情况下不导入子模块。
您应该像这样导入它们才能使用它们:
import MyModule.Module1
要更改此设置,您必须通过添加以下内容来调整 MyModule/__init__.py
文件:
import MyModule.Module1
这样,在执行 __init__.py
文件时,当您导入 MyModule
时,MyModule.Module1
将可用。
我正在尝试将我的一个项目变成一个包,这样我就可以将它部署为一个轮子。 我有一个这样的项目目录设置:
ProjectDir
├── setup.py
├── MyModule
│ ├── __init__.py
│ ├── Module1
│ │ ├── __init__.py
│ │ ├── main.py
│ ├── Module2
│ │ ├── file1.py
│ │ ├── __init__.py
│ │ ├── file2.py
│ │ ├── file3.py
│ └── Module3
│ ├── __init__.py
│ ├── Sub1
│ │ ├── file1.py
│ │ ├── file2.py
│ │ ├── main.py
│ └── Sub2
│ ├── file1.py
│ ├── main.py
└── test
├── test_Module_1
│ ├── __init__.py
│ └── test_main.py
├── test_Module_2
...
顶级 __init__.py 为空
模块 1 __init__.py 文件
from main import Function1
与其他模块 __init__.py 文件类似
setup.py
from setuptools import setup, find_packages
import os
import pip
setup(name='MyModule',
description='Tool suite to run MyModule',
packages=['MyModule'])
我可以导入 MyModule,但是当我尝试访问任何子模块时,我得到以下信息
AttributeError: module 'MyModule' has no attribute 'Module1' Or if I check attributes of my module, none are found.
import MyModule
dir(MyModule)
['builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'path', 'spec', 'os']
这是预料之中的,因为默认情况下不导入子模块。 您应该像这样导入它们才能使用它们:
import MyModule.Module1
要更改此设置,您必须通过添加以下内容来调整 MyModule/__init__.py
文件:
import MyModule.Module1
这样,在执行 __init__.py
文件时,当您导入 MyModule
时,MyModule.Module1
将可用。