создание исполняемого пакета python pip для linux - PullRequest
0 голосов
/ 02 мая 2020

У меня есть проект со структурой:

src/
-__main__.py which calls cli.get_args()
-cli.py which takes cli args and starts program
-program.py that contains logic of the program
setup.py
start.py

setup.py содержит:

setup(
name="test",
version="0.0.1",
description="test",
author="me",
license="MIT",
long_description=long_description,
long_description_content_type="text/markdown",
#py_modules=[""],
#package_dir={"": "src"},
classifiers=[
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.8",
    "License :: OSI Approved :: MIT License",
    "Operating System :: POSIX :: Linux",
    "Development Status :: 4 - Beta",
    "Environment :: Console",
    "Natural Language :: English",
    "Topic :: Internet"
],
install_requires=[
    "beautifulsoup4 >= 4.9.0",
    "requests >= 2.23.0",
],
packages=find_packages(),
entry_points={
    "console_scripts": ["test=src.cli:main"]
}
)

Я могу запустить программу из каталога root с помощью:

python3 src/cli.py --args
python3 src/ --args
pytrhon3 start.py --args

Теперь сам вопрос: как правильно упаковать этот проект, чтобы я мог установить его на другой компьютер и выполнить, как, например, flake8, где я могу установить flake8 в глобальную python установки, а затем вызвать

python3 -m flake8

Когда я собираю этот пакет, он не позволяет мне выполнить его как python3 -m test, я получаю /usr/bin/python3: No module named test, даже если он установлен глобально и может быть найден, когда я перечислите все пакеты pip3.

И еще один вопрос. Если я хотел бы предоставить еще один модуль запуска в каталоге root, который называется start.py для людей, которые клонируют репозиторий и не хотят собирать пакет, будет ли полезен start.py? Это дубликат main .py в src /, но он не так запутан для выполнения.

EDIT: я переименовал start.py в название моего проекта и удалил entry_points из setup.py , Моя посылка теперь может быть вызвана глобально с python3 -m test без проблем. Но это только дает мне больше путаницы, особенно после изучения исходного кода flake8, который делает всю установку совершенно другой.

...