Как упаковать командную строку Python script
Я создал python script, который предназначен для использования из командной строки. Как мне его упаковать? Это мой первый пакет python, и я немного ознакомился с setuptools, но я все еще не уверен, что это лучший способ сделать это.
Решение
В итоге я использовал setup.py с конфигурациями клавиш, отмеченными ниже:
setup(
....
entry_points="""
[console_scripts]
mycommand = mypackage.mymodule:main
""",
....
)
Здесь хороший пример в контексте.
Ответы
Ответ 1
@Zach, учитывая ваше пояснение в вашем комментарии к ответу @soulmerge, похоже, что вам нужно написать setup.py в соответствии с инструкциями относительно distutils - здесь, в частности, как вы регистрируетесь на pypi, а здесь о том, как загрузить на pypi после регистрации - и, возможно, (если вам нужна дополнительная функциональность по сравнению с самими дистрибутивами), добавьте setuptools, из которых easy_install
является частью, через инструкции здесь.
Ответ 2
Вместо того, чтобы использовать нестандартный способ setuptools, можно напрямую полагаться на функцию настройки distutils
, используя аргумент scripts
, как указано здесь: http://docs.python.org/distutils/setupscript.html#installing-scripts
from distutils import setup
setup(
...,
scripts=['path/to/your/script',],
...
)
Он позволяет вам оставаться совместимым: a) со всеми версиями python и b) не полагаться на setuptools как внешнюю зависимость.
Ответ 3
Что вы подразумеваете под упаковкой? Если это один script для запуска в ящике, на котором уже установлен python, вам просто нужно поместить shebang в первая строка файла и что он.
Если вы хотите, чтобы он выполнялся под Windows или на ящике без python, вам понадобится что-то внешнее, например pyinstaller.
Если вы задаете вопрос о том, где разместить файлы конфигурации/данных, вам нужно будет работать на платформе (например, записать в реестр или домашняя папка), насколько мне известно.
Ответ 4
В прошлом месяце я написал статью, отвечающую именно на ваш вопрос. Вы можете найти его здесь: http://gehrcke.de/2014/02/distributing-a-python-command-line-application/
Там я использую только рекомендуемые в настоящее время методы (шпагат, чистые setuptools вместо distutils, ключ console_scripts
в словаре entry_points
...), которые работают для Python 2 и 3.
Ответ 5
Для тех, кто является новичком в Python Packaging, я предлагаю пройти через Python Packaging Tutorial.
Примечание о учебнике:
В настоящее время эта документация сосредоточена только на Python 2.x и может быть не применима к пакетам, нацеленным на Python 3.x