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という名前のクラスがあります。どうすればそれを達成できますか?相対インポートで試しました。次に、実行するとエラーが発生します。それから私は試しました。しかし、循環インポートを行っているため、インポートできません。この問題を解決するには?ThreadManagerErrorHandling.pyfrom .. import preloadpreload.pyValueError: Attempted relative import beyond toplevel packagefrom preload import ThreadManager
Python バージョン 2.7.3