Подтвердить что ты не робот

Как упаковать командную строку Python script

Я создал python script, который предназначен для использования из командной строки. Как мне его упаковать? Это мой первый пакет python, и я немного ознакомился с setuptools, но я все еще не уверен, что это лучший способ сделать это.


Решение

В итоге я использовал setup.py с конфигурациями клавиш, отмеченными ниже:

setup(
....
    entry_points="""
[console_scripts]
mycommand = mypackage.mymodule:main
""",
....
)

Здесь хороший пример в контексте.

4b9b3361

Ответ 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