Что такое PyPI?

PyPI (Python Package Index) — это репозиторий и служба распространения пакетов программного обеспечения Python. Он служит центральным узлом, где разработчики могут публиковать свои пакеты Python, делая их доступными для установки другими. PyPI играет решающую роль в экосистеме программного обеспечения Python, предоставляя платформу для совместного использования, обнаружения и распространения пакетов Python.

Зачем нам нужно упаковывать наш проект?

Упаковка вашего проекта Python необходима для совместного использования, повторного использования и поддержания качества кода. Он обеспечивает простое распространение, управление зависимостями и управление версиями. Пакетные проекты можно устанавливать глобально или в виртуальных средах, обеспечивая модульность, изоляцию и воспроизводимость. Предоставляя четкую документацию и определяя зависимости, упаковка улучшает совместную работу, тестирование и непрерывную интеграцию. Это обеспечивает удобство использования кода в различных системах, упрощая развертывание в производственных средах. Упаковка помогает организовать код, упрощает обновления и обслуживание кода, что в конечном итоге повышает надежность кода и успешное сотрудничество.

Для некоторых команд требуется последняя версия pip. Начнем с того, что у вас установлена ​​последняя версия.

В Unix/macOS:

python3 -m pip install --upgrade pip

В Windows:

py -m pip install --upgrade pip

Организация вашего проекта.
Организуйте код вашего проекта в разумную структуру каталогов. Вот простой пример:

Структура каталогов для упаковки проекта

В этой структуре:

  • my_package — это корневой каталог вашего проекта.
  • my_project — это пакет, содержащий ваши файлы кода.
  • Файл __init__.py в каталоге сигнализирует о том, что каталог должен быть распознан как пакет Python.
  • module1.py и module2.py — это части, в которые вы поместите свой код.

Вы можете изменить содержимое этих файлов по мере необходимости для функциональности и документации вашего проекта.

Помните, что файл setup.py содержит метаданные о вашем пакете, такие как его имя, версия, автор и другие сведения. Он также используется для создания и распространения вашего пакета. README.md содержит документацию проекта, а LICENSE содержит информацию о лицензии, которую вы используете для своего проекта.

setup.py

from setuptools import setup, find_packages
setup(
    name='enter the project name',
    version='0.1',
    description='add project description',
    author='Your Name',
    author_email='[email protected]',
    packages=find_packages(),
)

README.md

# Package
Here , you can give a description of your project.
## Installation
You can install the package using pip:
pip install -i https://test.pypi.org/simple/ <name>

ЛИЦЕНЗИЯ

In this example, the `README.md` file provides installation instructions, an example of how to use the package, and a note about the project's license. Including a well-written `README.md` helps users understand what your package does and how they can use it effectively.

Перейдите в каталог вашего проекта:

cd Desktop/my_package

Выполните команды

Убедитесь, что вы уже зарегистрированы в TestPyPI (это изолированная среда в индексе пакетов Python, которая позволяет экспериментировать с инструментами и процедурами распространения, не влияя на реальный индекс.) и PyPI.

Теперь выполните следующие команды одну за другой в терминале, по которому вы перемещались ранее:

# Build the distribution package,and it will generate a folder named my_project.egg-info with 4 files listed: dependency_links.txt, PKG-INFO, SOURCES.txt, top_level.txt
python setup.py sdist bdist_wheel
# Install twine if not already installed
pip install twine
# Upload to TestPyPI
twine upload --repository-url https://test.pypi.org/legacy/ dist/*

Терминалу будет предложено ввести имя пользователя и пароль. Укажите имя, которое вы зарегистрировали в TestPyPI и PyPI.

Uploading distributions to https://test.pypi.org/legacy/
Enter your username: <username>
Enter your password: <password>
Uploading my_project_sample_add_two-0.1-py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.2/5.2 kB • 00:00 • ?
Uploading my-project-sample-add-two-0.1.tar.gz
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.4/4.4 kB • 00:00 • ?
View at:
https://test.pypi.org/project/<project-name>/0.1/

Установить из TestPyPI:

Теперь вы можете протестировать установку вашего пакета из TestPyPI. Создайте новую виртуальную среду, активируйте ее и установите пакет.

python -m venv add_one_env
add_one_env\Scripts\activate
#this package link you can get from your profile
pip install -i https://test.pypi.org/simple/ <project-name>

Если в этом TestPyPI все пойдет так, как ожидалось, сделайте то же самое с PyPI, который является настоящим индексом.

И TestPyPI, и PyPI являются репозиториями для размещения пакетов Python, PyPI — основным репозиторием для готовых к использованию пакетов, а TestPyPI используется для тестирования и промежуточной подготовки перед загрузкой пакетов в PyPI. (Рекомендуется использовать TestPyPI, чтобы убедиться, что процесс упаковки работает правильно, прежде чем публиковать пакет в основном PyPI.)

Вывод:

Потрясающий! Вы успешно опубликовали свой пакет Python. Здесь вы можете найти пример кода.

В заключение, упаковка и публикация проектов Python в PyPI необходимы для глобального обмена кодом. PyPI, индекс пакетов Python, действует как центральный репозиторий для пакетов Python, обеспечивая легкую установку и распространение. Организуя код, создавая метаданные с помощью setup.py и используя twine для загрузки, разработчики обеспечивают возможность повторного использования кода и совместную работу. TestPyPI служит промежуточной площадкой для проверки распространения перед публикацией в основном PyPI. Этот оптимизированный процесс расширяет совместное использование кода, облегчает тестирование и способствует созданию надежной экосистемы Python.

Об авторе

Абита Тангавел начала свой путь в качестве стажера-программиста в CodeStax.Ai. Она с энтузиазмом изучает новые технологии, страстно любит решать проблемы и совершенствовать свои навыки.

О CodeStax.Ai

В CodeStax.Ai мы стоим на стыке инноваций и корпоративных решений, предлагая технологическое партнерство, которое дает компаниям возможность повышать эффективность, инновации и рост, используя преобразующую силу платформ без кода и передовую интеграцию искусственного интеллекта.

Но настоящая магия? За кулисами — наше технологическое племя. Если у вас есть склонность к инновациям и страсть к переосмыслению норм, у нас есть для вас идеальная технологическая площадка. CodeStax.Ai предлагает больше, чем просто работу — это путешествие в самое сердце того, что будет дальше. Присоединяйтесь к нам и станьте частью революции, которая изменит технологическую среду предприятия.