我对 python 的模块系统和导入它们有一些疑问。我的应用程序具有以下结构:
preloader/
preload.py
Core/
Generator.py
Logger.py
ErrorHandling.py
Libraries/
MySQLi.py
memcached.py
__init__.py
文件甚至在根级别都存在于每个文件夹中,从结构中省略以提高可读性。
在里面preload.py
我想导入memcached
模块。所以我写from Libraries import memcached
。在里面memcached.py
我有一个名为Memcached
. 所以当我必须实例化它时,我必须写这样的东西mem = memcached.Memcached()
。我怎样才能避免写作modulename.classname()
而只做classname()
?
我也在 preload.py 里面试过这个from preloader.Libraries.memcached import Memcached
。那没有给我这样的模块错误!
另一个问题。有人请对相对进口有所了解。preload.py
里面有一个名为ThreadManager
I want this class inside的类ErrorHandling.py
。我怎样才能做到这一点?我尝试使用相对导入from .. import preload
。然后当我运行时preload.py
出现错误ValueError: Attempted relative import beyond toplevel package
。然后我尝试了from preload import ThreadManager
。但是后来它采用循环导入,所以我无法导入它。如何解决这个问题呢?
蟒蛇版本2.7.3