Стандартом для распространения программ на Python является Python Package Index, своего рода центральный Python-репозиторий. О процессе публикации много написано, покажу, как это делается, на своём примере.
Есть известный сайт-библиотека Lib.ru с разделом для писателей — СамИздат, СИ. С помощью PyQt и pyquery я написал программку для слежения за новинками СИ.
Первая важная деталь — в отличие от поделок "для себя", настройки нельзя хранить в текущем каталоге, для Linux нужно использовать что-то вроде `$HOME/.si_news/`:
# Folder to store all configuration HOMEDIR = os.path.expanduser(os.path.join('~', '.si_news')) if not os.path.isdir(HOMEDIR): os.mkdir(HOMEDIR) # File name with list of friends CFG_FRIENDS = os.path.join(HOMEDIR, 'friends.cfg')
Для простоты весь код размещается в одном файле, si_news.py. Следующий этап — выкладывание упакованных исходников на сайте PyPI. Создаём setup.py с заполненными метаданными приложения:
from setuptools import setup setup( name='si-news', version='0.1.1', description='Tracks updates for zhurnal.lib.ru authors', author='Denis Malinovsky', author_email='dmalinovsky@gmail.com', url='https://bitbucket.org/dmalinovsky/si-news/', py_modules=['si_news'], install_requires=['distribute', 'pyquery'], license='gpl', classifiers=[ 'Development Status :: 3 - Alpha', 'Environment :: MacOS X', 'Environment :: Win32 (MS Windows)', 'Environment :: X11 Applications :: Qt', 'Intended Audience :: End Users/Desktop', 'License :: OSI Approved :: GNU General Public License (GPL)', 'Natural Language :: Russian', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Utilities', ], entry_points = { 'gui_scripts': [ 'si_news = si_news', ] }, )
Встроенный в Python distutils не позволяет обрабатывать зависимости при установке, поэтому я использовал наследника брошенного setuptools, distribute. Метаданные в setup.py говорят сами за себя, два комментария — classifiers позволяет отнести программу к нужным категориям PyPI, а entry_points создаёт команды для запуска разных частей нашего приложения.
Затем запускаем `
python setup.py register sdist upload
` для регистрации на сайте PyPI, упаковки исходников в tar.gz и загрузки на сайт.К сожалению, PyQt нельзя установить с помощью setuptools и т.п., приходится ставить по старинке, с помощью `
apt-get install python-qt4
`. Зато саму программу можно установить с помощью замечательного инсталлятора pip: `pip install si-news
`.
Круть! Наверное скоро тоже поделюсь таким способом маленьким консольным паучком.
ОтветитьУдалитьДавай, больше программ хороших. :) Особенно полезная штука entry_points, удобно потом скрипт запускать, он в /usr/local/bin прописывается.
ОтветитьУдалитьЗдравствуйте Денис Малиновский. Ваш сайт очень полезен, я как новичок это ценю. Скажу честно - понял всё! У вас информация очень грамотно расписана.
ОтветитьУдалитьНа своём блоге я поставил ссылку на этот.
см. Изучаем Python / Полезные блоги и сайты
Спасибо на добром слове, Вячеслав. Вообще для изучения Питона очень полезно англоязычный туториал почитать: http://docs.python.org/tutorial/
ОтветитьУдалитьНа русском я только устаревшие версии видел.
Спасибо. Посмотрю
ОтветитьУдалить