Вопрос или проблема
Я использую 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
также выглядит в порядке. Основная информация указана верно. Однако стоит обратить внимание на следующие моменты:
- Секция
[tool.setuptools.packages.find]
— убедитесь, что ваш пакет действительно находится в папкеsrc
. При использовании определённых инструментов, таких какsetuptools
, важно, чтобы путь указан правильно. - Проверка зависимостей — убедитесь, что все зависимости, указанные в
pyproject.toml
, действительно имеют свои версии, позволяющие установку.
Установка в редактируемом режиме
Когда вы вызываете команду установки в вашем тестовом окружении:
python -m pip install --editable .
Убедитесь, что вы находитесь в корневой директории вашего проекта, то есть внутри папки \library
, где размещён pyproject.toml
.
Основные шаги для устранения проблемы с импортом
-
Проверьте имя пакета — Убедитесь, что в
__init__.py
вашего пакетаry
нет ошибок. Например, если вы хотите импортировать функции изtests.py
, вам необходимо либо импортировать их в__init__.py
, либо убедиться, что у вас достаточно кода для экспорта. -
Проверьте активированное виртуальное окружение — Перед запуском вашего теста убедитесь, что ваше виртуальное окружение действительно активировано. После активации виртуального окружения выполните команду:
python -m pip list
Убедитесь, что ваш пакет
ry
находится в списке установленных пакетов. -
Простые тесты с импортом — Создайте простой файл, например,
testLibrary.py
, и добавьте в него следующий код, чтобы проверить импорт:import ry from ry import tests print("Импорт выполнен успешно!")
Запустите этот файл в тестовом окружении, чтобы посмотреть, возникнут ли ошибки.
-
Проверка PYTHONPATH — Если проблемы сохраняются, возможно, стоит проверить переменную окружения
PYTHONPATH
. Она должна включать путь к вашей библиотеке. Вы можете добавить вашу библиотеку вPYTHONPATH
следующим образом перед запуском:export PYTHONPATH=$PYTHONPATH:/путь/к/вашему/library
Заключение
При создании редактируемой библиотеки в Python важно внимательно следить за структурой проекта и правильной настройкой окружения. Убедитесь, что вы корректно активируете виртуальное окружение и проверяете пути для импорта. Если вы следовали всем вышеперечисленным шагам и проблема всё ещё возникает, попробуйте заново создать виртуальное окружение, чтобы исключить возможные конфликты версий.
Если у вас есть дополнительные вопросы или вам нужна помощь по конкретным ошибкам, пожалуйста, дайте знать!