@ilya_chch

Как оформить Python приложение для публикации в pypi и использовании в качестве CLI утилиты?

Есть приложение, которое как-то выполняет свои функции. Используется в качестве CLI утилиты и только под Linux.

Сейчас у меня есть желание оформить его для размещения в pypi, чтобы иметь возможность установить и вызывать командой:
$ python -m some_cool_utility ...
или вообще:
$ some_cool_utility ...

Где почитать, как это правильно сделать?

И еще, как возможно для такого приложения хранить какие-то пользовательские настройки? (есть второе приложение, в которое можно подсунуть файл с пользовательским ключом)
  • Вопрос задан
  • 152 просмотра
Решения вопроса 1
deepblack
@deepblack Куратор тега Python
Как вам уже сказали, вам сначала сюда: packaging.python.org

А дальше создаете setup.py в проекте, подобного содержания:

посмотреть код
from setuptools import setup
from my_pkg import constants
from os import path

this_directory = path.abspath(path.dirname(__file__))
with open(path.join(this_directory, 'README.md')) as f:
    long_description = f.read()

setup(
    name='my_pkg',
    version=constants.MY_PKG_VERSION,
    description='Pkg description',
    author='Your Name',
    author_email='your@ema.il',
    url='http://github.com/some/user',
    packages=[
        'my_pkg',
        'my_pkg.abstractions',
        'my_pkg.exceptions',
    ],
    long_description=long_description,
    long_description_content_type='text/markdown',
    include_package_data=True,
    install_requires=[],
    python_requires='>=3.4',
    classifiers=[
        "License :: OSI Approved :: MIT License",
        "Programming Language :: Python",
        "Programming Language :: Python :: 3.4",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Natural Language :: English",
        "Operating System :: OS Independent",
        "Development Status :: 1 - Planning",
        "Intended Audience :: Developers",
        "Intended Audience :: Education",
        "Topic :: Software Development :: Libraries"],
    package_data={
        '': ['*.md', '*.txt', '*.json']
    },
    keywords='my_pkg',
    license='MIT',
)


Как разберетесь с этим, переходите сюда command-line-scripts

После того как прочитаете, в setup.py добавляете (предварительно реализовав базовые функции скрипта):
entry_points={
        'console_scripts': ['your_command=my_pkg.cli.command_line:main'],
    },


UPD:
Касательно кода, рекомендую ознакомиться с этими источниками:
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы