Как отправить посылку в PyPi? - PullRequest
       32

Как отправить посылку в PyPi?

15 голосов
/ 07 сентября 2010

Я написал небольшой модуль и хотел бы знать, каковы основные этапы его упаковки, чтобы отправить его на pypi :

  • что такое файловая иерархия?
  • как мне назвать файлы?
  • я должен использовать distutils для создания PKG-INFO?
  • куда мне включить мою документацию (сделанную с помощью sphinx)?

Ответы [ 5 ]

12 голосов
/ 07 сентября 2010

Я рекомендую прочитать Руководство автостопом по упаковке . В частности, вы должны взглянуть на Быстрый старт раздел , который описывает, как:

  1. Выложите свой проект
  2. Опишите ваш проект
  3. Создайте свой первый релиз
  4. Зарегистрируйте свой пакет с помощью индекса пакетов Python (PyPI)
  5. Загрузите свой релиз, затем возьмите свое полотенце и спасите Вселенную!

Вам также следует посмотреть Текущее состояние упаковки в Введение в упаковку раздел , так как это помогает распутать некоторые из путаница вокруг setuptools, distutils, distutils2 и распространять.

Обновление Re: Как называть файлы

Ниже приводится выдержка из PEP8 , которая отвечает на ваш вопрос о том, как называть файлы:

Модули должны иметь короткие, строчные имена. Подчеркивания могут использоваться в имени модуля, если это улучшает читабельность. Пакеты Python также должны иметь короткие, строчные имена, хотя использование подчеркивания не рекомендуется.

Поскольку имена модулей сопоставляются с именами файлов, а некоторые файловые системы нечувствительны к регистру и усекают длинные имена, важно, чтобы имена модулей были выбраны достаточно короткими - это не будет проблемой в Unix, но это может возникнуть проблема при переносе кода на более старые версии Mac, Windows или DOS.

3 голосов
/ 07 сентября 2010

пример всегда лучший способ узнать, как это сделать:

http://packages.python.org/an_example_pypi_project/

2 голосов
/ 07 сентября 2010

Может быть это руководство по CheeseShop поможет вам.Оттуда:

Отправка пакетов в индекс пакетов

Если у вас есть несколько модулей или пакетов Python, которыми вы хотели бы поделиться с сообществом Python, мы бы хотели, чтобы они были у вас.включен в индекс пакетов Python!Во-первых, если вы этого не сделали, вы захотите организовать свой проект.Вы можете следовать рекомендациям в ProjectFileAndDirectoryLayout.После этого вы захотите прочитать документацию по Python по созданию дистрибутивов: http://docs.python.org/distutils/index.html.

Вы также можете проверить Написание пакета на Python от Tarek Ziadé из книги Тарека "Эксперт Python Programming », где вопросы о разработке и распространении рассматриваются очень подробно

0 голосов
/ 08 ноября 2018

Самое главное - правильно подготовить setup.py. Тогда:

  • setup.py sdist bdist_wheel для создания архивов рассылки в dist/ папку
  • twine upload dist/* для загрузки архивов в PyPi (с вашим именем пользователя и паролем PyPi)

Вот пример setup.py:

from setuptools import setup, find_packages

with open('README.md') as readme_file:
    README = readme_file.read()

with open('HISTORY.md') as history_file:
    HISTORY = history_file.read()

setup_args = dict(
    name='elastictools',
    version='0.1.2',
    description='Useful tools to work with Elastic stack in Python',
    long_description_content_type="text/markdown",
    long_description=README + '\n\n' + HISTORY,
    license='MIT',
    packages=find_packages(),
    author='Thuc Nguyen',
    author_email='gthuc.nguyen@gmail.com',
    keywords=['Elastic', 'ElasticSearch', 'Elastic Stack', 'Python 3', 'Elastic 6'],
    url='https://github.com/ncthuc/elastictools',
    download_url='https://pypi.org/project/elastictools/'
)

install_requires = [
    'elasticsearch>=6.0.0,<7.0.0',
    'jinja2'
]

if __name__ == '__main__':
    setup(**setup_args, install_requires=install_requires)

Более подробную информацию вы можете найти здесь: https://medium.com/@thucnc/how-to-publish-your-own-python-package-to-pypi-4318868210f9

0 голосов
/ 15 апреля 2016

В ответе Мэтью Ранкина рассказывается, как организовать иерархию файлов вашего проекта, но мне приходится искать команды для выполнения каждый раз, когда я хочу обновить проект в PyPI.Вот они:

Как описано на сайте PyPi :

...