Не получается правильно сформировать setup.py и упаковать в wheel
Исходные данные
Очень много похожих вопросов, но пока ничего не помогло
Делаю свой первый python-пакет
Проект имеет следующую структуру:
├── dist
│ └── at_krl-0.0.dev1-py3-none-any.whl
├── example
│ └── test.kbs
├── Makefile
├── Pipfile
├── Pipfile.lock
├── pyproject.toml
├── README.md
├── setup.py
├── src
│ └── at_krl
│ ├── core
│ │ ├── __init__.py
│ │ ├── # исходники
│ ├── exceptions
│ │ ├── __init__.py
│ │ ├── # исходники
│ ├── __main__.py
│ └── utils
│ ├── error_listener.py
│ ├── __init__.py
│ ├── listener.py
└── tests
└── at_krl
├── # тесты
Установочный файл setup.pyвыглядит следующим образом
from setuptools import setup, find_packages
import json
import os
root = os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))
os.chdir(root)
def read_pipenv_dependencies(fname):
# Получаем из Pipfile.lock зависимости по умолчанию.
filepath = os.path.join(os.path.dirname(__file__), fname)
with open(filepath) as lockfile:
lockjson = json.load(lockfile)
return [dependency for dependency in lockjson.get('default')]
if __name__ == '__main__':
setup(
name='at-krl',
version=os.getenv('PACKAGE_VERSION', '0.0.dev1'),
packages=find_packages(where='src/at_krl'),
package_dir={'': 'src/at_krl'},
description='...',
install_requires=[
*read_pipenv_dependencies('Pipfile.lock'),
]
)
wheel собираю с помощью:
pip install wheel
python setup.py bdist_wheel
Проблемы
- В wheel-файл
dist/at_krl-0.0.dev1-py3-none-any.whlне копируется файл/src/at_krl/__main__.py, содержимое проверил с помощьюzipfile.Zipfile - При попытке установить wheel-файл с помощью pip в другом месте, установка проходит успешно, но потом импортировать пакет не возможно, в site-packages ничего не добавляется
Что можно по этому поводу сделать? Гуглить пробовал python can not import after install from whl - ничего не помогло, или я в глаза долблюсь
Исходный код и файлы можно посмотреть тут
Ответы (1 шт):
Автор решения: Андрей Григорьев
→ Ссылка
Нашел, в чем проблема
- В папке
src/at_krlпотерялся файл__init__.py, добавил его - Переформировал
setup.pyследующим образом:
from setuptools import setup, find_packages
import json
import os
root = os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))
os.chdir(root)
def read_pipenv_dependencies(fname):
# Получаем из Pipfile.lock зависимости по умолчанию.
filepath = os.path.join(os.path.dirname(__file__), fname)
with open(filepath) as lockfile:
lockjson = json.load(lockfile)
return [dependency for dependency in lockjson.get('default')]
if __name__ == '__main__':
setup(
name='at-krl',
version=os.getenv('PACKAGE_VERSION', '0.0.dev2'),
packages=find_packages(where='src'),
package_dir={'': 'src'},
description='AT-TECHNOLOGY knowledge representation language parsing and processing package.',
install_requires=[
*read_pipenv_dependencies('Pipfile.lock'),
]
)