Вот пример проекта, созданного в соответствии с инструкциями в этом посте:
Для получения дополнительной информации о том, что означают такие термины, как pip, virtualenv и т. д., см.
Образец файла setup.py
Файл setup.py - самый важный файл конфигурации для вашего проекта. Вот пример для начала:
# -*- coding: utf-8 -*-
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="myproject",
version="0.0.1", # Обновляйте это для каждой новой версии
author="Your name",
author_email="your@email.com",
description="long description",
long_description=long_description,
long_description_content_type="text/markdown",
install_requires=[ # Добавьте сюда зависимости проекта
"pandas>=0.20.0" # пример: pandas версии 0.20 или выше
],
url="https://github.com/your/github/project",
packages=setuptools.find_packages(),
classifiers=( # Классификаторы помогают людям находить
"Programming Language :: Python :: 3", # ваши проекты. См. все возможные классификаторы
"License :: OSI Approved :: MIT License", # на https://pypi.org/classifiers/
"Operating System :: OS Independent",
),
)
Структура проекта
project-name/ <--- имя проекта, не обязательно совпадать с внутренним именем
│
├── myproject <--- имя модуля, это имя, которое вы будете использовать в "import"
│ ├── __init__.py <--- файл инициализации должен быть здесь, даже если ваш проект - только Python 3
│ └── module.py <--- подмодули
│
├── LICENSE <--- необязательно, но рекомендуется
│
├── README.md
│
└── setup.py <--- информация о пакете: имя, автор, версия и ЗАВИСИМОСТИ
Упаковка проекта
Чтобы упаковать проект, запустите следующий код (желательно под virtualenv):
После создания учетной записи вы можете загружать упакованные файлы
Ожидается сообщение об ошибке, поскольку такое имя уже существует. Вы должны выбрать уникальное название проекта.
(test-venv)$ twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: xxxxx
Enter your password:
Uploading myproject-0.0.1-py3-none-any.whl
100%|████████████████████████████████████████████████████████| 4.52k/4.52k [00:00<00:00, 5.46kB/s]
HTTPError: 403 Client Error: The user 'xxxxx' isn't allowed to upload to project 'MyProject'.
See https://pypi.org/help/ # project-name for more information. for url: https://upload.pypi.org/legacy/
Поздравляю! После загрузки проекта (как указано выше) любой может установить ваш проект через pip.
Исправление проблем
Не удается импортировать модуль
Если вы не можете импортировать только что загруженный модуль, убедитесь, что у вас есть файл __init__.py, как в инструкциях, даже если ваш проект - это полный Python 3!
Модуль pkg_resources не имеет атрибута iter_entry_points