Автор оригинала: FreeCodeCapm Team.
Марко Массензио
Хотите поделиться своим кодом Python с другими разработчиками? Хотите облегчить жизнь ваших пользователей при установке вашего пакета? Затем вы должны опубликовать свои пакеты Python в Pypi.
Хорошая новость в том, что она сейчас проще, чем когда-либо. Это краткое руководство, которое будет проходить вас через процесс и направить вас к соответствующей документации по пути.
Шаг № 1: Создать файл setup.py
Аргументы для Настройка () документированы здесь и нетривиальные. Хороший пример, чтобы пойти, это мой FileCrypt Проект Setup.py файл.
Ниже приведен краткий выдержка. Опять же, обязательно Прочитайте документацию Для получения дополнительной информации об этом, поскольку он объясняет, что все эти аргументы означают намного лучше, чем я мог, даже с полной средней статьей, чтобы сделать это:
setup(name='crytto', description='An OpenSSL-based file encryption and decryption utility', long_description=long_description, version='0.2.0', url='https://github.com/massenz/filecrypt', author='M. Massenzio', author_email='marco@alertavert.com', license='Apache2', classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: System Administrators', 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python :: 3' ], packages=['crytto'], install_requires=[ 'PyYAML>=3.11', 'sh>=1.11' ], entry_points={ 'console_scripts': [ 'encrypt=crytto.main:run' ] })
Примечание: Сделать не Путать устаревшие проушины с Intutils – вот правильный импорт для Setup.py:
from setuptools import setup
Самая сложная часть выясняет имена пакетов и правильная конфигурация для вашего файлы сценария. Вероятно, лучше всего решить это заранее, но вы всегда можете исправить их во время создания ваших Setup.py.
Самая большая проблема состоит в том, чтобы придумать имя пакета верхнего уровня, которое не конфликтует с существующим. Насколько я могу сказать, это в настоящее время в основном процесс пробной и ошибки.
Как только Setup.py находится в достойной форме, вы можете попробовать построить колесо:
python setup.py bdist_wheel
После этого хорошая практика для создания нового VirtualenV и попытаться установить новый пакет в этом:
virtualenv test_env./test_env/bin/activatepip install dist/my-project.whl
Это особенно полезно для тестирования, будь то console_scripts были правильно настроены.
Если вы используете классификаторы как в:
classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: System Administrators', 'License :: OSI Approved :: Apache Software License', 'Programming Language :: Python :: 3']
… Тогда убедитесь, что консультируйтесь с Список классификаторов , как все остальное вызвало ошибку и предотвратить регистрацию.
Зарегистрируйте свой проект
Примечание: Документация сказала мне использовать шпагат для этого шага, но это не сработало для меня. Ваш пробег может варьироваться.
Если у вас уже есть учетная запись на Pypi, вам нужно Создать один Затем войти.
Затем вы можете отправиться на Регистрационная форма И загрузить свой Pkg_info файл. Это было создано в [PRJ имя] .egg-info/ каталог. Он может занять немного обратно, пока вы пытаетесь успокоить богов PYPI, чтобы принять вашу вариант конфигурации.
В частности, придумываясь с неконфудионным, но значимым именем пакета, может принять больше попыток, чем вы ожидаете. Опять же, я рекомендую вам планировать, так как я не смог найти простой способ перечислить Все Имена пакетов. Если вы знаете одно, обязательно оставьте комментарий. Вы замечете, что, по словам Pypi …
There are currently 88906 packages here.
(«Здесь», будучи пипи, по состоянию на 16 сентября 2016 года).
Загрузить в Pypi
После того, как регистрация преуспевает, фактическая загрузка довольно проста, используя шпагат:
twine upload dist/*
При условии, что у вас есть действительный ~/.pypirc, он просто спросит ваш пароль. Тогда вам просто надо:
$ cat ~/.pypirc [distutils] index-servers=pypi
[pypi] repository = https://upload.pypi.org/legacy/ username = [your username]
Вот и все. Наслаждайтесь зданием и поделиться своими пакетами Python!
Я изначально опубликовал это в моем блоге в codetrips.com .