目次
PyPIにパッケージを登録してみたので流れをまとめました、詳しい説明は抜きで必要最低限のことだけをまとめてあります。
主にPyPAの公式sampleprojectを参考にしています。
1. 必要なファイル
.
├── MANIFEST.in
├── README.rst
├── setup.cfg
├── setup.py
├── XXX
│ ├── __init__.py
│ └── XXX.py
└── tests
├── __init__.py
└── test_XXX.py
※XXXは適宜置き換えます
setup.cfgは以下のように書いておきます。
[bdist_wheel]universal=1
MANIFEST.inはPyPIにアップロードするファイル書きます。
include README.rst
include setup.cfg
recursive-include tests *
README.rstとなっているのでreStructuredTextです。PyPIでMarkdownは使えません。
2. setup.pyの内容
importsysfromsetuptools.command.testimporttestasTestCommandfromsetuptoolsimportsetup,find_packagesfromcodecsimportopenfromosimportpathhere=path.abspath(path.dirname(__file__))withopen(path.join(here,'README.rst'),encoding='utf-8')asf:long_description=f.read()classPyTest(TestCommand):user_options=[('pytest-args=','a',"Arguments to pass to py.test")]definitialize_options(self):TestCommand.initialize_options(self)self.pytest_args=[]deffinalize_options(self):TestCommand.finalize_options(self)self.test_args=[]self.test_suite=Truedefrun_tests(self):#import here, cause outside the eggs aren't loadedimportpytesterrno=pytest.main(self.pytest_args)sys.exit(errno)setup(name='sample',version='0.1.0',description='Description',long_description=long_description,url='https://github.com/foo/sample',author='foo',author_email='foo.bar@example.com',license='MIT',py_modules=['sample'],classifiers=[# How mature is this project? Common values are# 3 - Alpha# 4 - Beta# 5 - Production/Stable'Development Status :: 3 - Alpha',# Indicate who your project is intended for'Intended Audience :: Developers','License :: OSI Approved :: MIT License','Programming Language :: Python :: 2','Programming Language :: Python :: 2.7','Programming Language :: Python :: 3','Programming Language :: Python :: 3.3','Programming Language :: Python :: 3.4',],keywords='Sample',packages=find_packages(exclude=['contrib','docs','tests']),install_requires=['peppercorn'],extras_require={'dev':['check-manifest'],'test':['coverage'],},tests_require=['pytest'],cmdclass={'test':PyTest},entry_points={'console_scripts':['sample=sample:main',],},)
※sampleというパッケージになっているので適宜置き換えます
特筆すべき内容
- README.rstをPyPIのトップに表示
- "python setup.py test"でテストが走る
- モジュール名の指定(py_modules)
- コンソールアプリのコマンド追加(entry_points)
他は基本的なsetup.pyの内容です。
setupの引数の、name,description,url,authorなどの内容は適宜書き換えて使います。
3. PyPIへの登録
(1) PyPI - the Python Package Index : Python Package Indexでユーザーを作ります。
(2) ~/.pypircを作成します。
[distutils]index-servers= pypi[pypi]username:{Username}password:{Password}
(3) setup.pyの内容を確認します。
$ python setup.py check -r -s
(4) PyPIに登録します。
$ python setup.py register
(5) パッケージをアップロードします。
$ python setup.py sdist bdist_wheel upload
コマンドを実行するにあたって必要なパッケージがいくつかあるので適宜インストールが必要です。
まとめ
必要最低限の情報で説明はないので、PyPIについて詳しいことは他のブログエントリや公式のドキュメントを参照するといいです。
参考記事
PyPIについて多くのことはこちらのスライドに学びました。わかりやすかったです。