Вызовите другой 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 пытается использовать эту версию вместо моей.

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

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 }
)
Другие вопросы по тегам