サブパッケージを使用したいのに、なぜすべてのサブパッケージをインポートする必要があるのですか?
例を挙げて説明します。
In [1]: import cime
In [2]: cime.runners
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/home/miki/testit/<ipython-input-2-35e09c66121a> in <module>()
----> 1 cime.runners
AttributeError: 'module' object has no attribute 'runners'
In [3]: import cime.runners
In [4]: cime.runners
Out[4]: <module 'cime.runners' from '/home/miki/testit/venv/lib/python2.7/site-packages/cime/runners/__init__.pyc'>
ご覧のとおり、これは通常のPythonパッケージです。
In [5]: cime.__file__
Out[5]: '/home/miki/testit/venv/lib/python2.7/site-packages/cime/__init__.pyc'
In [6]: ls /home/miki/testit/venv/lib/python2.7/site-packages/cime
download.py __init__.py log.py runners/ run.pyc utils.pyc
download.pyc __init__.pyc log.pyc run.py utils.py
ただし、これは組み込みモジュールでは発生しません。なんで?
In [7]: import os # instead of import os.path
In [8]: os.path
Out[8]: <module 'posixpath' from '/home/miki/testit/venv/lib/python2.7/posixpath.pyc'>
ありがとう、
ルービック
PS私はvirtualenvの中にいますが、それが重要かどうかはわかりません。