5

私はそのような構造を持っています:

setup.py
package
    __init__.py
    sub_package
        ___init__.py
    sub_package2
        __init__.py

setup.py install でパッケージをインストールすると、(パッケージ全体を site-packages dir にコピーすることで) 正しく動作します:

site_packages
    package
        sub_package
        sub_package2

しかし、pip install package を実行すると、pip は各サブパッケージを独立したパッケージとしてインストールします。

site-packages
    package
    sub_package
    sub_package2

どうすればこれを回避できますか? setuptools の find_packages() を使用してパッケージを指定します。

4

1 に答える 1

7

注:この回答は現在有効ではありません。歴史的な理由でのみ保持されています。現時点での正しい回答は、setuptoolsを使用することです。詳細については、 https://mail.python.org/pipermail/distutils-sig/2013-March/020126をご覧ください。 html


まず、setuptoolsを削除することをお勧めします:

代替テキスト

そして、distutilsPythonパッケージを配布するための標準メカニズム)を使用するか、 distutils2も配布しますが、まだ準備ができていないと思います。新しい標準については、setup.pyの作成方法のガイドラインを示します。

あなたの問題のためにdistutilsfind_packages()に存在しないでください、そしてあなたはこのようにあなたのパッケージを追加しなければなりません:

setup(name='package',
      version='0.0dev1',
      description='blalal',
      author='me',
      packages=['package', 'package.sub_package', 'package.sub_package2'])

また、パッケージとサブパッケージがたくさんある場合は、ここにパッケージのリストを作成するコードを作成する必要があります。これはDjangoソースの例です。

distutilsを使用すると問題が解決すると思いますが、これが役立つことを願っています:)

于 2010-11-09T14:08:03.513 に答える