Не получается правильно сформировать 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

Проблемы

  1. В wheel-файл dist/at_krl-0.0.dev1-py3-none-any.whl не копируется файл /src/at_krl/__main__.py, содержимое проверил с помощью zipfile.Zipfile
  2. При попытке установить wheel-файл с помощью pip в другом месте, установка проходит успешно, но потом импортировать пакет не возможно, в site-packages ничего не добавляется

Что можно по этому поводу сделать? Гуглить пробовал python can not import after install from whl - ничего не помогло, или я в глаза долблюсь

Исходный код и файлы можно посмотреть тут


Ответы (1 шт):

Автор решения: Андрей Григорьев

Нашел, в чем проблема

  1. В папке src/at_krl потерялся файл __init__.py, добавил его
  2. Переформировал 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'),
        ]
    )
→ Ссылка