我想安装一个简单的python库,我创建并认为我可能会缺少一个步骤。设置正常(或至少运行),但是当我导入它不工作,因为我期望。 目录结构看起来像setup.py导入不能正常工作
Foo/
setup.py
README.txt
LICENSE.txt
foo/
__init__.py
bar.py
我可以做
>>> import foo
但当时如果我尝试
>>> foo.bar
我收到以下错误
AttributeError: 'module' object has no attribute 'bar'
反之不Ë如果我使用
>>> from foo import bar
rrors发生这里是我的setup.py
from distutils.core import setup
setup(
name='Foo',
version='0.1.0',
author='ctrl-c',
author_email='[email protected]',
packages=['foo'],
license='LICENSE.txt',
description='Foo does bar.',
long_description=open('README.txt').read(),
)
我想我只是错过了一些东西,但我一直在寻找通过文档,并没有发现它。谢谢。
将import foo添加到__init__.py正是我所期待的。谢谢 – ctrlc 2011-04-28 16:41:48
这对于大多数包来说都是非常普遍的做法,也就是说我可以'输入numpy'并且在numpy.linalg'没有任何问题。 – ctrlc 2011-04-28 16:49:11
你说得对。许多软件包作者选择从软件包本身导出常用符号。最好将这些模块实现为模块并通过'__init __。py'暴露它们,即不要直接在'__init __。py'中实现类/函数,只是用它来控制哪些符号是包名称空间的一部分。 – samplebias 2011-04-28 16:53:50