Я использую setuptools для распространения библиотеки Python. У меня есть следующая структура каталогов:
/src
/production
setup.py
/prod-library
/package1
/package2
Структура папок должна оставаться такой, потому что в будущем будет несколько библиотек, работающих под управлением src, и им нужны собственные файлы setup.py. Таким образом, традиционный ответ с наличием 1 родительской папки и перемещением файла setup.py в корневую папку в этом случае не будет работать.
Я использую следующее в файле setup.py библиотеки для экспорта библиотеки (которая работает)
package_dir={'': '.'},
packages=find_packages()
Внутри проекта tar.gz это выглядит так:
/prod-library
/package1
/package2
Но внутри файлов Python пакета prod-библиотеки импорт, ссылающийся на другие модули, должен быть структурирован следующим образом:
import src.production.prod-library.package1
import src.production.prod-library.package2
Проблема:
После импорта одной из этих библиотек в другой проект возникают следующие ошибки:
ModuleNotFoundError: No module named 'src.production'
Поскольку сборка выпадает только в пакете / prod-library, проект, импортирующий код, завершается сбоем из-за отсутствующей структуры папок (src / production), поскольку сборка имеет только /prod-library.
.
Что мне нужно сделать, так это включить папку src / production в сборку дистрибутива, чтобы результирующий файл tar.gz выглядел следующим образом:
/src
/production
/prod-library
/package1
/package2
Я не уверен, как получить их в структуре сборки, так как они находятся выше расположения setup.py. Как это можно сделать?
Если это не так, тогда я открыт для предложений по исправлению импорта, если это может быть решением.