Я новичок в использовании стандартных инструментов упаковки Python и обычно использую специальные инструменты. Однако я решил лучше понять процесс упаковки, но столкнулся с проблемой.
Я пытаюсь создать артефакты для распространения моего приложения, и мне Я успешно сгенерировал файл sdist и файл колеса. Хотя я, вероятно, мог бы настроить процесс установки из файла sdist, я обеспокоен тем, что могу что-то упустить. Однако файл колеса создается с неполной инвентаризацией.
Структура проекта:
Код: Выделить всё
.
├── bin
│ ├── conn_mgr.sh
│ └── ora_tapi.sh
├── config
│ ├── OraTAPI.ini
│ └── OraTAPI.ini.sample
├── controller
│ ├── conn_mgr.py
│ ├── __init__.py
│ └── ora_tapi.py
├── lib
│ ├── config_manager.py
│ └── __init__.py
├── LICENSE
├── MANIFEST.in
├── model
│ ├── api_generator.py
│ ├── db_objects.py
│ ├── framework_errors.py
│ ├── __init__.py
│ ├── session_manager.py
│ └── user_security.py
├── pyproject.toml
├── README.md
├── requirements.txt
├── setup.py
├── setup.sh
├── templates
│ ├── column_expressions
│ │ ├── inserts
│ │ │ └── updated_on.tpt
│ │ └── updates
│ │ └── updated_on.tpt
│ ├── misc
│ │ ├── trigger
│ │ │ └── table_name_biu.tpt
│ │ └── view
│ │ └── view.tpt
│ └── packages
│ ├── body
│ │ ├── package_footer.tpt
│ │ └── package_header.tpt
│ ├── procedures
│ │ ├── delete.tpt
│ │ ├── insert.tpt
│ │ ├── select.tpt
│ │ └── update.tpt
│ └── spec
│ ├── package_footer.tpt
│ └── package_header.tpt
└── view
├── console_display.py
├── __init__.py
├── interactions.py
└── ora_tapi_csv.py
Код: Выделить всё
setup.pyКод: Выделить всё
from setuptools import setup, find_packages
setup(
name="OraTAPI",
version="1.0.6",
description="Oracle TAPI Application",
author="Your Name",
author_email="your_email@example.com",
packages=find_packages(),
include_package_data=True, # Include files from the MANIFEST.in
package_data={ # Include non-Python files in specific packages
"templates": ["**/*.tpt", "**/*.tpt.sample"],
},
data_files=[ # Include root-level files and other extras
(".", ["setup.py", "LICENSE", "setup.sh", "requirements.txt", "README.md"]),
],
entry_points={
"console_scripts": [
"conn_mgr=controller.conn_mgr:main",
"ora_tapi=controller.ora_tapi:main",
]
},
)
Код: Выделить всё
MANIFEST.inКод: Выделить всё
include *.sh
recursive-include bin *.sh
recursive-include templates *.tpt *.tpt.sample
include config/*.ini
include config/*.ini.sample
include LICENSE
include README.md
Я создаю пакет, выполняя следующее:
Код: Выделить всё
source venv/bin/activate
python3 setup.py sdist bdist_wheel
Независимо от того, использую ли я файл MANIFEST.in или нет, результаты, похоже, одинаковы.
Что я пробовал :
- Гарантировано, что include_package_data=True установлен в setup.py.
- Явно определены package_data в setup.py.
- Дважды проверил, что каталог шаблонов правильно включен в MANIFEST.in.
- Запустите sdist python3 setup.py bdist_wheel несколько раз после внесения изменений.
- Что мне нужно сделать, чтобы файл wheel включал как каталог шаблонов, так и файлы корневого уровня, такие как LICENSE, README. md и т. д.?
- Я пропустили какие-либо этапы процесса упаковки, чтобы убедиться, что колесо готово?
Подробнее здесь: https://stackoverflow.com/questions/792 ... on-package
Мобильная версия