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
た。それは私にそのようなモジュールエラーを与えませんでした!!
別の質問です。誰かが相対的な輸入に光を当ててください. の中にI want this class insidepreload.py
という名前のクラスがあります。どうすればそれを達成できますか?相対インポートで試しました。次に、実行するとエラーが発生します。それから私は試しました。しかし、循環インポートを行っているため、インポートできません。この問題を解決するには?ThreadManager
ErrorHandling.py
from .. import preload
preload.py
ValueError: Attempted relative import beyond toplevel package
from preload import ThreadManager
Python バージョン 2.7.3