4

いくつかのパッケージを PyPI に送信しましdjangox-makodjangox-route。それらは同じ名前空間 package を持っていますdjango。両方のパッケージをインストールすると、うまく機能します。ただし、IPython では補完を使用できません。例えば、

>>> import djangox.[tab]

この場合、期待djangox.routeしてdjangox.mako表示されますが、結果は得られませんでした。

だから私はipythonソースコードを掘り下げて、関数を見つけましmodule_listIPython.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)

djangoxpackage は名前空間パッケージであるため、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
4

0 に答える 0