我有一个叫foo的包裹。其组织如下:
package_dir/foo/foo.py
package_dir/foo/utils.py
package_dir/foo/other.py
package_dir/foo/__init__.py
我应该给你起个名字foo.py公司除了这个库之外的其他东西已经随着时间的推移而增长和进化,现在支持其他东西,并且被广泛使用。这个包被捆绑并存储在我们的内部pipy服务器上,这样在安装之后,我就得到了/usr/lib/python2.7/site-packages/foo。你知道吗
从这个包裹进口的最好方法是什么?你知道吗
目前我这样做:
import foo
然后我在客户端代码中完成了这项工作:
foo.foo.myfunction()
有许多类和函数可以使用这种方法:
from foo import blah, blah, blah
这有点麻烦。这是一个pythonic方法包?有没有更好的办法?你知道吗
谢谢你的帮助。你知道吗
*更新*
所以我做了这个,但没有找到我的函数:
from __init__.py:
import foo
import utils
import other
然后我像这样导入:
import foo
在我的代码中我尝试过:
foo.myfunc()
还有:
myfunc()
两人都抱怨:
AttributeError: 'module' object has no attribute 'myfunc'
你有一些选择:
或者
或者
或者您可以“升级”一些api,以便从顶层发布它们。在
foo/__init__.py
中导入它们,然后可以从包对象中使用它们。例如,新的foo/__init__.py
可以是:请注意显式的相对导入语法,以避免顶级foo包和嵌套foo包之间的歧义。你知道吗
然后你可以写:
等等。你知道吗
相关问题 更多 >
编程相关推荐