Создание редактируемой библиотеки на Python

Вопрос или проблема

Я использую Python 3.11 и следую этому руководству
https://setuptools.pypa.io/en/latest/userguide/development_mode.html и https://setuptools.pypa.io/en/latest/userguide/package_discovery.html#src-layout, в котором у меня есть проект, и я могу использовать его как редактируемую библиотеку.

Структура библиотеки следующая:

\library:
    \Include
    \Lib
    \Scripts
    \src:
       \ry:
           __init__.py (это пусто)
           tests.py (в этом файле одна функция)
    pyproject.toml
    pyvenv.cfg
    README.md

Файл pyproject.toml выглядит так

[build-system]
requires = ["setuptools >= 61.0"]
build-backend = "setuptools.build_meta"

[tool.setuptools.packages.find]
where = ["src"]

[project]
name = "ry"
version = "0.0.1"
authors = [
  { name="Хорхе", email="[email protected]" },
]
description = "Небольшой пример пакета"
readme = "README.md"
requires-python = ">=3.11"
classifiers = [
    "Язык программирования :: Python :: 3",
    "Лицензия :: Одобрена OSI :: MIT License",
    "Операционная система :: Независимая от ОС",
]

[project.urls]

Затем я создаю тестовую среду venv, которую активирую, затем перехожу в \library и могу выполнить команду

>python -m pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --editable .

Я успешно установил библиотеку; однако в тестовой среде venv у меня есть testLibrary.py, который не может ссылаться на библиотеку. Я пробую:

import ry
или
from ry import tests

Что бы я ни пробовал, я не могу получить доступ к ry в тестовой среде venv.

Есть идеи, в чем проблема?

Спасибо

Ответ или решение

Создание редактируемой библиотеки в Python может представлять некоторые трудности, особенно когда вы настраиваете проект, следуя руководствам. Исходя из вашего описания, вы уже правильно настроили структуру проекта и используете pyproject.toml для конфигурации вашего пакета. Тем не менее, проблема с импортом библиотеки в вашем тестовом окружении может быть связана с несколькими аспектами. Давайте углубимся в это и рассмотрим возможные решения.

Структура проекта

Поскольку ваш проект имеет следующую структуру:

\library
    \Include
    \Lib
    \Scripts
    \src
       \ry
           __init__.py
           tests.py
    pyproject.toml
    pyvenv.cfg
    README.md

Эта структура выглядит корректной для использования setuptools с src-размещением.

Конфигурация pyproject.toml

Ваш файл pyproject.toml также выглядит в порядке. Основная информация указана верно. Однако стоит обратить внимание на следующие моменты:

  1. Секция [tool.setuptools.packages.find] — убедитесь, что ваш пакет действительно находится в папке src. При использовании определённых инструментов, таких как setuptools, важно, чтобы путь указан правильно.
  2. Проверка зависимостей — убедитесь, что все зависимости, указанные в pyproject.toml, действительно имеют свои версии, позволяющие установку.

Установка в редактируемом режиме

Когда вы вызываете команду установки в вашем тестовом окружении:

python -m pip install --editable .

Убедитесь, что вы находитесь в корневой директории вашего проекта, то есть внутри папки \library, где размещён pyproject.toml.

Основные шаги для устранения проблемы с импортом

  1. Проверьте имя пакета — Убедитесь, что в __init__.py вашего пакета ry нет ошибок. Например, если вы хотите импортировать функции из tests.py, вам необходимо либо импортировать их в __init__.py, либо убедиться, что у вас достаточно кода для экспорта.

  2. Проверьте активированное виртуальное окружение — Перед запуском вашего теста убедитесь, что ваше виртуальное окружение действительно активировано. После активации виртуального окружения выполните команду:

    python -m pip list

    Убедитесь, что ваш пакет ry находится в списке установленных пакетов.

  3. Простые тесты с импортом — Создайте простой файл, например, testLibrary.py, и добавьте в него следующий код, чтобы проверить импорт:

    import ry
    from ry import tests
    
    print("Импорт выполнен успешно!")

    Запустите этот файл в тестовом окружении, чтобы посмотреть, возникнут ли ошибки.

  4. Проверка PYTHONPATH — Если проблемы сохраняются, возможно, стоит проверить переменную окружения PYTHONPATH. Она должна включать путь к вашей библиотеке. Вы можете добавить вашу библиотеку в PYTHONPATH следующим образом перед запуском:

    export PYTHONPATH=$PYTHONPATH:/путь/к/вашему/library

Заключение

При создании редактируемой библиотеки в Python важно внимательно следить за структурой проекта и правильной настройкой окружения. Убедитесь, что вы корректно активируете виртуальное окружение и проверяете пути для импорта. Если вы следовали всем вышеперечисленным шагам и проблема всё ещё возникает, попробуйте заново создать виртуальное окружение, чтобы исключить возможные конфликты версий.

Если у вас есть дополнительные вопросы или вам нужна помощь по конкретным ошибкам, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...