PyPIへのアップロード

ディストリビューションの作成

プロジェクトをPyPIに公開するために,プロジェクトのディストリビューションを作ります.

ソースディストリビューション

ソースディストリビューションを作成します.setup.pyがあるディレクトリ下で以下を実行します.

(takuhai) > python setup.py sdist

distディレクトリが新しく作られて,その中にtakuhai-0.1.0.tar.gzが格納されます.

Wheels

ビルドされたwheelを作成します.setup.pyがあるディレクトリ下で以下を実行します.

(takuhai) > python setup.py bdist_wheel

buildディレクトリが新しく作られて,いろいろなファイルが作られます.wheel自体はdist下にtakuhai-0.1.0-py3-none-any.whlの名前で格納されます.

アップロード

アカウントの作成

プロジェクトをPyPIにアップロードするためには事前にユーザーアカウントを作成しておく必要があります.テスト用のTest PyPIにアップロードする場合は,別途ユーザーアカウントが必要です.以下のフォームから登録しましょう.

ユーザー登録が終わったら,~/.pypircを用意し,以下のように書きます.

[distutils]
index-servers =
    pypi
    testpypi

[pypi]
repository: https://upload.pypi.org/legacy/
username: <username>
password: <password>

[testpypi]
repository: https://test.pypi.org/legacy/
username: <username>
password: <password>

Note

pypiのrepository行は省略できます.またusername行およびpassword行も省略できます.後述のtwine-u USERNAME引数,-p PASSWORD引数を渡すか、単に要求されたときに入力しましょう.

アップロード

アップロードするにはtwineを使います.twineは他のプロジェクトでも使うので,専用のtwine環境下にインストールします.こうすることで,takuhaiプロジェクトに直接関係のないtwineやそれが依存するパッケージでtakuhai環境が汚染されることを防ぎます.

Note

python setup.py sdistpython setup.py bdist_wheeltwine環境下で実行することもできます.

(takuhai) > conda create -n twine
(takuhai) > activate twine
(twine) > conda install -c conda-forge twine

PyPIにアップロードしましょう.distがあるディレクトリ下で以下を実行します.

(twine) > twine upload dist/*

PyPIからのインストール

PyPIからインストールできるかテストしてみましょう.そのための一時的なtakuhai-pypi環境を作ります.確実にリモートからダウンロードするためにキャッシュを無効にします.

(twine) > conda create -n takuhai-pypi
(twine) > activate takuhai-pypi
(takuhai-pypi) > conda install pip
(takuhai-pypi) > pip install takuhai --no-cache-dir
Collecting takuhai
  Downloading takuhai-0.1.0-py3-none-any.whl
Collecting livereload (from takuhai)
  Downloading livereload-2.5.1.tar.gz
(後略)

必要なパッケージも同時にインストールされていることが分かります.

(takuhai-pypi) > pip freeze
blinker==1.4
certifi==2017.11.5
click==6.7
docutils==0.14
feedgenerator==1.9
Jinja2==2.10
livereload==2.5.1
MarkupSafe==1.0
pelican==3.7.1
Pygments==2.2.0
python-dateutil==2.6.1
pytz==2017.3
six==1.11.0
takuhai==0.1.0
tornado==4.5.2
Unidecode==0.4.21
wincertstore==0.2

takuhaiパッケージは作業ディレクトリのものではなく,takuhai-pypi環境のsite-packages下にダウンロードされたものが使われています.

(takuhai-pypi) > cd ..
(takuhai-pypi) > python
>>> import takuhai
>>> takuhai.__file__
'C:\\Users\\daizu\\Miniconda3\\envs\\takuhai-pypi\\lib\\site-packages\\takuhai\\__init__.py'

最後に不要になった環境を削除しておきます.

(takuhai-pypi) > activate root
(root) > conda remove -n takuhai-pypi --all