我想安裝一個簡單的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