【发布时间】:2013-04-22 14:33:47
【问题描述】:
我刚刚使用安装脚本制作了我的第一个 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 来解决这个问题,但我讨厌使用这样的语句,即使它们保留在导入命名空间中。
【问题讨论】:
-
如果你导入
my_package,为什么你会期待my_class神奇地出现? -
你说得对,我知道导入必须更明确。我只是不确定为了让
my_class神奇地出现的最佳做法是什么;) -
这实际上不是一个打包问题,只是一个熟悉 Python 导入的问题。
标签: python installation distutils setup.py