setup.py установка локальных пакетов - PullRequest
0 голосов
/ 07 декабря 2018

Если у меня есть дерево, которое выглядит следующим образом:

├── project
│   ├── package
│   │   ├── __init__.py
│   │   ├── setup.py
├── env
└── setup.py

Есть ли способ включить вложенный файл setup.py в установку для top setup.py?Я хочу избежать этого:

pip install -e . ; cd project/package ; pip install -e .

1 Ответ

0 голосов
/ 08 декабря 2018

Решение состоит в том, чтобы иметь два отдельных проекта: основной проект (обычно приложение) и подпроект (обычно библиотека).Основное приложение имеет зависимость от библиотеки.

Древовидная структура и setup.py

Основной проект может иметь следующую структуру:

your_app/
|-- setup.py
ˋ-- src/
    ˋ-- your_app/
        |-- __init__.py
        |-- module1.py
        ˋ-- ...

setup.pyвашего приложения может быть:

from setuptools import find_packages
from setuptools import setup

setup(
    name='Your-App',
    version='0.1.0',
    install_requires=['Your-Library'],
    packages=find_packages('src'),
    package_dir={'': 'src'},
    url='https://github.com/your-name/your_app',
    license='MIT',
    author='Your NAME',
    author_email='your@email.com',
    description='Your main project'
)

Вы можете заметить, что:

  • Имя вашего приложения может немного отличаться от имени вашего пакета;
  • Этот пакет зависит от "Your-Library", определенной ниже;
  • Вы можете поместить свой источник в каталог src, но это необязательно.У многих проектов их нет.

Подпроект может иметь следующую структуру:

your_library/
|-- setup.py
ˋ-- src/
    ˋ-- your_library/
        |-- __init__.py
        |-- lib1.py
        ˋ-- ...

setup вашей библиотеки может быть:

from setuptools import find_packages
from setuptools import setup

setup(
    name='Your-Library',
    version='0.1.0',
    packages=find_packages('src'),
    package_dir={'': 'src'},
    url='https://github.com/your-name/your_library',
    license='MIT',
    author='Your NAME',
    author_email='your@email.com',
    description='Your sub-project'
)

Собираем все вместе

Создайте virtualenv для вашего приложения и активируйте его

Перейдите в каталог your_library/ и выполните:

pip install -e .

Затем,перейдите в каталог your_app/ и запустите:

pip install -e .

Теперь вы готовы к коду.Веселитесь!

См. Руководство автостопом по Python : «Структурирование вашего проекта».

...