wheel に含まれるファイルを制御するにはどうすればよいですか? MANIFEST.in
では使用されていないようpython setup.py bdist_wheel
です。
更新:
ソース tarball と wheel からのインストールの違いについて、私は間違っていました。ソース配布には で指定されたファイルが含まれていますMANIFEST.in
が、インストールされたパッケージには python ファイルしか含まれていません。インストールがソース配布、egg、またはホイールのいずれによるものであるかに関係なく、インストールする必要がある追加のファイルを特定するための手順が必要です。つまり、追加のパッケージ ファイルにはpackage_dataが必要であり、コマンド ライン スクリプトやシステム構成ファイルなどのパッケージ外のファイルにはdata_filesが必要です。
元の質問
パッケージをビルドし、含まれるファイルと除外されるファイルを制御し、設定を確認するためにpyromaとcheck-manifestを使用しているプロジェクトがあります。python setup.py sdist
MANIFEST.in
最近、デュアル Python 2/3 コードに変換し、setup.cfg を追加しました
[bdist_wheel]
universal = 1
でホイールを作成できpython setup.py bdist_wheel
ます。希望どおりのユニバーサル ホイールのように見えます。ただし、 で指定されたすべてのファイルが含まれているわけではありませんMANIFEST.in
。
何がインストールされますか?
深く掘り下げた結果、パッケージングとホイールについて詳しく知ることができました。これが私が学んだことです:
PyPi のmultigtfs プロジェクトに2 つのパッケージ ファイルをアップロードします。
multigtfs-0.4.2.tar.gz
- のすべてのファイルを含むソース tar ボールMANIFEST.in
。multigtfs-0.4.2-py2.py3-none-any.whl
- 問題のバイナリ ディストリビューション。
どちらも Python 2.7.5 を使用して 2 つの新しい仮想環境を作成し、各パッケージをインストールしました ( pip install multigtfs-0.4.2.tar.gz
)。2 つの環境はほぼ同じです。それら.pyc
には、「コンパイルされた」Python ファイルであるさまざまなファイルがあります。ディスク上のさまざまなパスを記録するログ ファイルがあります。ソース tar ボールからのインストールにはmultigtfs-0.4.2-py27.egg-info
、インストールの詳細を示すフォルダーが含まれ、ホイール インストールにはmultigtfs-0.4.2.dist-info
、そのプロセスの詳細を含むフォルダーがあります。ただし、multigtfs プロジェクトを使用するコードの観点からは、2 つのインストール方法に違いはありません。
明示的に、私のテストで使用される .zip ファイルも含まれていないため、テスト スイートは失敗します。
$ django-admin startproject demo
$ cd demo
$ pip install psycopg2 # DB driver for PostGIS project
$ createdb demo # Create PostgreSQL database
$ psql -d demo -c "CREATE EXTENSION postgis" # Make it a PostGIS database
$ vi demo/settings.py # Add multigtfs to INSTALLED_APPS,
# Update DATABASE to set ENGINE to django.contrib.gis.db.backends.postgis
# Update DATABASE to set NAME to test
$ ./manage.py test multigtfs.tests # Run the tests
...
IOError: [Errno 2] No such file or directory: u'/Users/john/.virtualenvs/test/lib/python2.7/site-packages/multigtfs/tests/fixtures/test3.zip'
追加ファイルの指定
回答からの提案を使用して、次のディレクティブをいくつか追加しましたsetup.py
。
from __future__ import unicode_literals
# setup.py now requires some funky binary strings
...
setup(
name='multigtfs',
packages=find_packages(),
package_data={b'multigtfs': ['test/fixtures/*.zip']},
include_package_data=True,
...
)
これにより、zip ファイル (および README) がフォルダーにインストールされ、テストが正しく実行されるようになります。提案をありがとう!