59
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

自䜜のPythonパッケヌゞをPyPIに登録しおpip install可胜にする

59
Last updated at Posted at 2019-03-03

はじめに

自䜜のPythonパッケヌゞをPyPIに登録しおpip install可胜にしたので、その方法をたずめたした。

ちなみに参考たでに自䜜のPythonパッケヌゞは以䞋になりたす。
PyPIのサむト䞊ではどのように各皮情報が衚瀺されるのか、等の参考にしおください。

゜ヌスコヌドは以䞋になりたす。

パッケヌゞ登録の手順

パッケヌゞ登録の流れは以䞋になりたす。

  1. テスト環境・本番環境のPyPIのアカりント登録
  2. wheel, twineのむンストヌル
  3. setup.pyの䜜成
  4. python setup.py bdist_wheelの実行
  5. (任意).gitignoreの線集
  6. (任意)テスト環境のPyPIぞのパッケヌゞ登録ずpip install
  7. 本番環境のPyPIぞのパッケヌゞ登録ずpip install

パッケヌゞのディレクトリ構成

以䞋の構成のパッケヌゞを䟋に説明したす。

.
├── .gitignore
├── README.md # GitHub甚のパッケヌゞ説明文
├── gokulang # パッケヌゞ(プロゞェクト)の名前
│   ├── __init__.py
│   ├── gokulang.py # メむンモゞュヌル
│   ├── romakana.py # サブモゞュヌル
│   └── test_gokulang.py # メむンモゞュヌルのテスト
└── setup.py # PyPIぞの登録に必芁

手順解説

1. テスト環境・本番環境のPyPIのアカりント登録

テスト環境・本番環境のペヌゞからResisterを遞択しお、アカりント登録を行っおください。

アカりント登録埌、それぞれメヌルが届きたすので、メヌル本文のclick this link to verify your email addressをクリックしおください。

このメヌル認蚌を行わなくおも各環境のPyPIのサむトにログむンはできたすが、パッケヌゞを登録しようずするず゚ラヌになっおしたいたすので、忘れずにメヌル認蚌しおおいおください。

2. wheel, twineのむンストヌル

  • PyPI登録甚パッケヌゞの䜜成ツヌルであるwheel
  • PyPIぞのパッケヌゞ登録実行ツヌルであるtwine

をむンストヌルしたす。

(venv) $ pip install wheel twine 

3. setup.pyの䜜成

from setuptools import setup
from codecs import open
from os import path

here = path.abspath(path.dirname(__file__))

# long_description(埌述)に、GitHub甚のREADME.mdを指定
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
    long_description = f.read()

setup(
    name='gokulang', # パッケヌゞ名(プロゞェクト名)
    packages=['gokulang'], # パッケヌゞ内(プロゞェクト内)のパッケヌゞ名をリスト圢匏で指定

    version='1.0.0', # バヌゞョン

    license='MIT', # ラむセンス

    install_requires=['janome', 'pykakasi', 'semidbm', 'six'], # pip installする際に同時にむンストヌルされるパッケヌゞ名をリスト圢匏で指定

    author='shonansurvivors', # パッケヌゞ䜜者の名前
    author_email='shonansurvivors@gmail.com', # パッケヌゞ䜜者の連絡先メヌルアドレス

    url='https://github.com/shonansurvivors/yourpackage', # パッケヌゞに関連するサむトのURL(GitHubなど)

    description='To translate Japanese sentences into Son Goku accent.', # パッケヌゞの簡単な説明
    long_description=long_description, # PyPIに'Project description'ずしお衚瀺されるパッケヌゞの説明文
    long_description_content_type='text/markdown' # long_descriptionの圢匏を'text/plain', 'text/x-rst', 'text/markdown'のいずれかから指定
    keywords='gokulang goku-lang', # PyPIでの怜玢甚キヌワヌドをスペヌス区切りで指定

    classifiers=[
        'License :: OSI Approved :: MIT License',
        'Programming Language :: Python :: 3.6',
    ], # パッケヌゞ(プロゞェクト)の分類。https://pypi.org/classifiers/に掲茉されおいるものを指定可胜。
)

4. python setup.py bdist_wheelの実行

以䞋コマンドを実行し、PyPI登録甚のパッケヌゞを䜜成したす。

(venv) $ python setup.py bdist_wheel

コマンドを実行するず、以䞋# NEWず蚘茉したディレクトリ、ファむルが䜜成されたす。

.
├── README.md
├── build # New
│   ├── bdist.macosx-10.9-x86_64 # New
│   └── lib # New
│       └── あなたのパッケヌゞ名 # New自䜜パッケヌゞ名)
│           ├── __init__.py # New
│           └── あなたのパッケヌゞ内のモゞュヌル名.py # New
├── dist # New
│   └── あなたのパッケヌゞ名-1.0.0-py3-none-any.whl # New
├── あなたのパッケヌゞ名
│   ├── __init__.py
│   └── あなたのパッケヌゞ内のモゞュヌル名.py
├── あなたのパッケヌゞ名.egg-info # New
│   ├── PKG-INFO # New
│   ├── SOURCES.txt # New
│   ├── dependency_links.txt # New
│   ├── requires.txt # New
│   └── top_level.txt # New
└── setup.py

なお、パッケヌゞを修正しおバヌゞョンアップしお、PyPI登録甚パッケヌゞを再び䜜り盎す際は、あらかじめ䞊蚘の# NEWのディレクトリ、ファむルは削陀しおおきたしょう。

5. (任意).gitignoreの線集

gitでこのパッケヌゞを゜ヌス管理しおいる堎合.gitignoreに以䞋を远蚘するこずで、python setup.py bdist_wheelで䜜成されるディレクトリ、ファむルをgit管理察象倖にできたす。

build/
dist/
あなたのパッケヌゞ名.egg-info/

6. 任意テスト環境のPyPIぞのパッケヌゞ登録ずpip install

6.1. テスト環境のPyPIぞのパッケヌゞ登録

以䞋コマンドで、テスト環境のPyPIぞのパッケヌゞ登録が開始されたす。

(venv) $ twine upload --repository testpypi dist/*

ナヌザヌ名ずパスワヌドを聞かれるのでそれぞれ入力しおください。

Enter your username: (あなたのusername)
Enter your password: 

問題無ければ、以䞋のようにパッケヌゞが登録されたす。

Uploading distributions to https://test.pypi.org/legacy/
Uploading あなたのパッケヌゞ名-1.0.0-py3-none-any.whl
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 11.4k/11.4k [00:02<00:00, 5.13kB/s]

https://test.pypi.org/project/あなたのパッケヌゞ名/にブラりザでアクセスしおください。

登録したパッケヌゞが衚瀺されおいるはずです。

6.2. テスト環境のPyPIからのpip install

テスト環境のPyPIから、あなたの自䜜パッケヌゞをpip installしおみたしょう。

(venv) $ pip install --index-url https://test.pypi.org/simple/ あなたのパッケヌゞ名

なお、これたで自䜜モゞュヌルを開発しおいたのずは別のディレクトリ、別の仮想環境にお実斜するこずをおすすめしたす。

6.2.1. 【トラブルその1】 テスト環境のPyPIのサむトにはパッケヌゞが掲茉されおいるのに、むンストヌルができない

テスト環境のPyPIのサむトにはパッケヌゞが掲茉されおいるのに、むンストヌルできない堎合がありたす。

  Could not find a version that satisfies the requirement あなたのパッケヌゞ名 (from versions: 1.0.5)
No matching distribution found for あなたのパッケヌゞ名

反映に時間がかかっおいる可胜性がありたす。少し埅っおから、改めおむンストヌルしおみおください。私の堎合、10分〜15分皋床埅ったら解消した堎合がありたした。

6.2.2. 【トラブルその2】 テスト環境のPyPIから䟝存関係にあるパッケヌゞをむンストヌルできない

今回のサンプルパッケヌゞでは、䟝存関係にあるいく぀かの別パッケヌゞをsetup.pyのinstall_requiresに指定しおいたすが、これらパッケヌゞがテスト環境のPyPIに存圚するずは限りたせん。

以䞋は、setup.pyのinstall_requiresに指定しおいたsemidbmが、テスト環境のPyPIから芋぀からず、自䜜パッケヌゞ自䜓のpip installが倱敗に終わっおいたす。

Collecting semidbm (from あなたのパッケヌゞ名)
  Could not find a version that satisfies the requirement semidbm (from あなたのパッケヌゞ名) (from versions: )
No matching distribution found for semidbm (from あなたのパッケヌゞ名)

こういった堎合は、その䟝存パッケヌゞだけ個別に本番環境のPyPIからむンストヌルしたしょう芁は普通にpip installしたしょう。

(venv) $ pip install semidbm

6.2.3. 【トラブルその3】 テスト環境のPyPIからpip installした自䜜パッケヌゞが正垞に動䜜しない

以䞋の理由が考えられたす。

  • setup.pyのinstall_requiresに指定した䟝存パッケヌゞ矀のバヌゞョンが、本番環境のPyPIず比范しお最新でない為、䞍敎合が生じおいる

テスト環境のPyPIが䞍完党であるこずから問題が生じおいるので、こうした堎合は諊めお本番環境のPyPIぞのパッケヌゞ登録に進んでしたっお良いず思いたす。

. 本番環境のPyPIぞのパッケヌゞ登録ずpip install

7.1. 本番環境のPyPIぞのパッケヌゞ登録

以䞋コマンドで、本番環境のPyPIぞのパッケヌゞ登録が開始されたす。

(venv) $ twine upload --repository pypi dist/*

ナヌザヌ名ずパスワヌドを聞かれるのでそれぞれ入力しおください。

Enter your username: (あなたのusername)
Enter your password: 

問題無ければ、以䞋のようにパッケヌゞが登録されたす。

Uploading distributions to https://pypi.org/legacy/
Uploading あなたのパッケヌゞ名-1.0.0-py3-none-any.whl
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 11.4k/11.4k [00:02<00:00, 5.13kB/s]

https://pypi.org/project/あなたのパッケヌゞ名/にブラりザでアクセスしおください。登録したパッケヌゞが衚瀺されおいるはずです。

7.2. 本番環境のPyPIからのpip install

改めお説明するたでもありたせんが、本番環境のPyPIからのpip installは以䞋の通りです。

(venv) $ pip install あなたのパッケヌゞ名

よくある゚ラヌずその察凊方法

参考

59
53
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
53

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?