【发布时间】:2015-12-18 03:26:37
【问题描述】:
对于 Python 3 项目,我有以下文件夹结构,其中 vehicle.py 是主脚本,文件夹 stats 被视为包含多个模块的包:
cars 模块定义了以下函数:
def neon():
print('Neon')
print('mpg = 32')
def mustang():
print('Mustang')
print('mpg = 27')
使用 Python 3,我可以从 vehicle.py 中访问每个模块中的函数,如下所示:
import stats.cars as c
c.mustang()
但是,我想直接访问每个模块中定义的函数,但是这样做时收到错误消息:
import stats as st
st.mustang()
# AttributeError: 'module' object has no attribute 'mustang'
我还尝试使用以下代码将__init__.py 文件放在stats 文件夹中:
from cars import *
from trucks import *
但我仍然收到错误:
import stats as st
st.mustang()
# ImportError: No module named 'cars'
我正在尝试使用与 NumPy 相同的方法,例如:
import numpy as np
np.arange(10)
# prints array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
如何在 Python 3 中创建像 NumPy 这样的包来直接访问模块中的函数?
【问题讨论】:
-
那些说
__init__.py是创建包的必要条件的人还没有听说过implicit namespace packages;这就是为什么您当前的项目结构不会在import stats.cars as c上引发错误的原因。 -
@user2357112 我知道 Python 3 中的隐式命名空间,但它仍然无法解决我看到的错误。
标签: python python-3.x python-import