いくつかのパッケージを PyPI に送信しましdjangox-mako
たdjangox-route
。それらは同じ名前空間 package を持っていますdjango
。両方のパッケージをインストールすると、うまく機能します。ただし、IPython では補完を使用できません。例えば、
>>> import djangox.[tab]
この場合、期待djangox.route
してdjangox.mako
表示されますが、結果は得られませんでした。
だから私はipythonソースコードを掘り下げて、関数を見つけましmodule_list
たIPython.core.completerlib.py
:
for root, dirs, nondirs in os.walk(path):
subdir = root[len(path)+1:]
if subdir:
files.extend(pjoin(subdir, f) for f in nondirs)
dirs[:] = [] # Do not recurse into additional subdirectories.
else:
files.extend(nondirs)
djangox
package は名前空間パッケージであるため、init .py がないため、 for ループはファイル for に何も追加しませんdjangox
。
ipythonのバグだと思いますが、pydevでも同じです。これは、ほとんどのツール開発者が名前空間パッケージを気にしないことを意味します。したがって、setuptools 名前空間パッケージのサポートでも修正する必要があると思います。
ただし、時間がかかるので、その回避策があるとよいでしょう。それが私のコンピューターだけの問題なら、私は何かを持っています。
touch site-packages/djangox/__init__.py
その後、ipython と pydev の両方が機能します。easy_install もこの作業を行いますが、同じ名前空間パッケージを使用して最後にインストールされたパッケージのみをサポートします。
python setup.py install
しかし、私のパッケージ ユーザーにはコード補完機能が必要です。以下のコードを機能させる回避策はありますか?
pip install djangox-mako djangox-route
ipython
>>> import djangox.[tab]
djangox.route djangox.mako