パッケージのビルドと配布
追加ファイルを含む Python パッケージを作成し、それらにアクセスできることを確認したので、このパッケージをビルドして配布する方法を学びましょう。
セットアップスクリプトの更新
パッケージをビルドする前に、より多くのメタデータと要件を含めるように setup.py ファイルを更新しましょう。
cd ~/project
cat > setup.py << 'EOF'
from setuptools import setup, find_packages
setup(
name="mypackage",
version="0.1.0",
packages=find_packages(),
## Include data files
package_data={
"mypackage": ["config.ini", "data/*.txt"],
},
## Dependencies
install_requires=[
"setuptools",
],
## Metadata
author="Your Name",
author_email="your.email@example.com",
description="A simple Python package with additional files",
keywords="sample, package, data",
url="https://example.com/mypackage",
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
python_requires=">=3.6",
)
EOF
ソースおよび Wheel ディストリビューションのビルド
Python パッケージはいくつかの形式で配布できますが、最も一般的なのは次のとおりです。
- ソースディストリビューション (sdist): ソースコードと追加ファイルを含む tarball
- Wheel ディストリビューション (bdist_wheel): ビルドせずにインストールできる、事前にビルドされたパッケージ
両方のタイプのディストリビューションを作成しましょう。
## Make sure we have the latest build tools
pip install --upgrade setuptools wheel
## Build the distributions
python setup.py sdist bdist_wheel
ディストリビューションが作成されたことを示す出力が表示され、新しいファイルが dist ディレクトリに表示されるはずです。
dist ディレクトリの内容を確認しましょう。
ls -l dist
少なくとも 2 つのファイルが表示されるはずです。
.tar.gz ファイル (ソースディストリビューション)
.whl ファイル (wheel ディストリビューション)
ディストリビューションファイルからのパッケージのインストール
次に、ディストリビューションファイルの 1 つからパッケージをインストールするテストを行いましょう。まず、開発バージョンをアンインストールしましょう。
pip uninstall -y mypackage
次に、wheel ディストリビューションをインストールしましょう。
pip install dist/mypackage-0.1.0-py3-none-any.whl
パッケージが正常にインストールされたことを示す出力が表示されるはずです。
パッケージがインストールされ、追加ファイルに引き続きアクセスできることを確認しましょう。
python -c "import mypackage; print(mypackage.read_config())"
これにより、config.ini ファイルの内容が出力されます。
[config]
debug = true
log_level = INFO
パッケージの公開
実際のシナリオでは、通常、Python Package Index (PyPI) にパッケージを公開して、他の人が pip install mypackage を使用してインストールできるようにします。これには、以下が含まれます。
- PyPI でアカウントを作成する (https://pypi.org/)
twine などのツールを使用してディストリビューションをアップロードする:pip install twine
twine upload dist/*
ただし、この実験では、ローカルでディストリビューションを作成する段階で終了します。これで、他の人が配布およびインストールできる追加ファイルを含む完全な Python パッケージが完成しました。
作成したものの概要
- モジュールと追加ファイルを含む Python パッケージ
- ディストリビューションにこれらのファイルを含めるセットアップスクリプト
- コードからこれらのファイルにアクセスするための関数
- 配布の準備ができたソースおよび wheel ディストリビューションファイル
この構造は、将来作成する可能性のあるすべての Python パッケージの強固な基盤を提供します。