我刚刚使用安装脚本创建了我的第一个Python包,我想知道这种行为是否正常。它由一个包含我想要访问的类的模块组成。项目结构如下:
.
|
+ -- __init__.py
+ -- setup.py
my_package
|
+ __init__.py
+ my_class.py
__init__.py
始终为空。
当我安装它时,这是我期望的行为:
>>> import my_package
>>> my_class.MyClass()
A new object is born!
相反,如果我这样做,我只能这样做:
>>> from my_package import my_class
>>> my_class.MyClass()
A new object is born!
我的包和我的类文件的名称相同,如果相关的话。这是一个糟糕的包装设计案例吗?我发现我可以通过将from my_class import *
放在__init__.py
中解决问题,但我讨厌使用这些语句,即使它们保留在导入命名空间中。
答案 0 :(得分:3)
import my_package
将导入my_package/__init__.py
中定义的内容,因此此行为完全正常。您无法使用my_class
,因为您没有对该模块的任何引用。
我不知道您的包设计是好还是错误,但是如果您想在导入{{1}时使用MyClass
,只需将此类移动到脚本my_package
。