Вызов другого setup.py в setup.py

Мой репозиторий содержит мой собственный модуль Python и подмодуль одной из его зависимостей, у которого есть собственный setup.py.

Я хотел бы вызвать setupy.py зависимости при установке моей собственной библиотеки, как это возможно?

Моя первая попытка:

 $ tree
.
├── dependency
│   └── setup.py
└── mylib
    └── setup.py


 $ cat mylib/setup.py 
from setuptools import setup

setup(
    name='mylib',
    install_requires= ["../dependency"]
    # ...
)

$ cd mylib && python setup.py install
error in arbalet_core setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'../depen'"

Однако install_requires не принимает пути.

Моя вторая попытка состояла в том, чтобы использовать dependency_links=["../dependency"] с install_requires=["dependency"], однако зависимость с таким же именем уже существует в Pypi, поэтому setuptools пытается использовать эту версию вместо моей.

Какой правильный/чистый способ?


person myoan    schedule 27.11.2016    source источник
comment
Возможно, это возможно с использованием dependency_links с использованием URL-адреса file://, как описано здесь: stackoverflow.com/questions/32688688/. Вы не можете переименовать зависимость, если код находится под вашим контролем?   -  person languitar    schedule 06.12.2016


Ответы (1)


Возможное решение — запустить пользовательскую команду до/после процесса установки.

Пример:

from setuptools import setup
from setuptools.command.install import install

import subprocess

class InstallLocalPackage(install):
    def run(self):
        install.run(self)
        subprocess.call(
            "python path_to/local_pkg/setup.py install", shell=True
        )

setup(
    ...,
    cmdclass={ 'install': InstallLocalPackage }
)
person HappyCry    schedule 09.08.2017