如何创建一个只有一个模块的 Python 包?

pet*_*ant 6 python python-2.7

我写了一个模块,我想有一天制作一个“包”。现在,我将其保存在 Python 路径上目录中同名的子文件夹中(其中有一个空__init__.py模块)。问题是,要将这些模块导入其他程序(并让 Spyder 的自动完成功能识别模块的内容),我必须做类似的事情

from modulename import modulename
Run Code Online (Sandbox Code Playgroud)

或者

import modulename.modulename as modulename
Run Code Online (Sandbox Code Playgroud)

当我宁愿只是

import modulename
Run Code Online (Sandbox Code Playgroud)

我尝试让__init__.py目录内部导入模块中的所有内容,但这不适用于 Spyder 的自动完成功能。执行此操作的适当方法是什么?Numpy 有许多模块,但仍然有一些在顶级命名空间中可用。看来它是通过例如这样做的

import core
from core import *
Run Code Online (Sandbox Code Playgroud)

这是我应该采取的路线,还是我的问题是模块名称与文件夹名称相同?

Boo*_*boo 2

正如@Takahiro 建议的那样,拥有一个与包同名的模块并不是一个好主意,但这并非不可能。

modulename目录__init__.py中的可以是以下内容:

from .modulename import *
Run Code Online (Sandbox Code Playgroud)

例如,该目录中的modulename.py可能是:

def foo():
    print('I am foo')
Run Code Online (Sandbox Code Playgroud)

那么客户端程序可以是

import modulename

modulename.foo()
Run Code Online (Sandbox Code Playgroud)

或者

from modulename import foo

foo()
Run Code Online (Sandbox Code Playgroud)

ETC。