10 февраля 2012

Размещаем свои python проекты на pypi.python.org

Я периодически использую свои скрипты в разных местах, для того что бы не копипастить их постоянно и следить за обновлением удобно добавить их в pypi.python.org и устанавливать/обновлять через pip install. Для этого необходимо подготовить наш модуль.
Структура файлов
.
├── myproject
│   ├── mymodel.py
│   └── __init__.py
├── README
└── setup.py

setup.py
from setuptools import setup

def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(
    name='pyandexmap',
    version='0.0.2',
    description='Scripts for get data from yandex map API',
    author='',
    author_email='spam@19216801.ru',
    url='http://github.com/uralbash/pyandexmap/',
    keywords = "yandex map api search ajax geocode geocodding directions\
        navigation json",
    install_requires=[''],
    license='GPL',
    packages=['pyandexmap'],
    long_description=read('README'),
    classifiers=[
        'Development Status :: 3 - Alpha',
        'Environment :: Console',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: GNU General Public License (GPL)',
        'Natural Language :: English',
        'Natural Language :: Russian',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Topic :: Scientific/Engineering :: GIS',
        ],
)

classifiers - это список разделов куда попадет ваш пакет, взять существующие можно здесь

Затем регаем свой модуль так
python setup.py register sdist upload
Отвечаем на вопросы если вы еще не зарегистрированы и все :)

2 комментария:

  1. А есть какие-нибудь рекомендации по иерархии папок/файлов в пакете?

    ОтветитьУдалить
    Ответы
    1. Если я не ошибаюсь, то минимальные требования для pypi это файл README и сам питоновский пакет. Подробнее написано здесь http://docs.python.org/distutils/setupscript.html#installing-package-data и еще здесь http://docs.python.org/distutils/sourcedist.html#specifying-the-files-to-distribute.

      Удалить