Как установить мой собственный пакет Python с его пользовательскими зависимостями? - PullRequest
0 голосов
/ 20 июня 2019

Я хотел бы найти способ установить свой собственный пакет Python, который зависит от других пользовательских пакетов Python.

Я следовал этому руководству, чтобы создавать свои собственные пакеты Python: https://python -packaging.readthedocs.iao / en / latest /

Для всех пакетов минимальная структура:

myOwnPackage/
    myOwnPackage/
        __init__.py
    setup.py

Теперь я создал пакет, который зависит от других пользовательских пакетов. Его структура:

myOwnPackage/
    dependencies/
        packageA
        packageB
    myOwnPackage/
        __init__.py
    setup.py

Мой вопрос: как легко установить myOwnPackage и его пользовательские зависимости с помощью pip?

В приведенном выше примере я хотел бы установить myOwnPackage, packageA и packageB, когда я вызываю pip следующим образом: pip install myOwnPackage

Я не нашел способа включить имена зависимостей в setup.py, как я могу сделать для официальных пакетов python, таких как numpy, pyqt5 и т. Д.

Я нахожу способ частично решить мою проблему, используя файл require.txt с pip:

pip install -r requirements.txt myOwnPackage

и вот как я написал файл требований:

./dependencies/packageA
./dependencies/packageB

Я хорошо работаю, но не тогда, когда у меня есть такие рекурсивные зависимости:

myOwnPackage/
    dependencies/
        packageA/
            dependencies/
                packageC
            packageA/
                __init__.py
            setup.py
            requirements.txt
        packageB
    myOwnPackage/
        __init__.py
    setup.py
    requirements.txt

pip с требованиями верхнего уровня. Txt установит myOwnPackage, packageA и packageB, но не знает, что ему нужно установить packageC, который является зависимостью packageA.

Есть идеи?

1 Ответ

0 голосов
/ 20 июня 2019

Я почти решил свою проблему.

Мне нужно построить каждую зависимость с помощью следующей команды: python setup.py sdist, чтобы создать один файл пакета (tar.gz)

Затем,Я могу вызвать их в top-package setup.py:

...
dependency_links=["file:/local/path/myOwnPackage/dependencies/packageA/dist/packageA-0.1.tar.gz"],
install_requires=["packageA"],
...

Наконец, я запускаю следующую команду для установки myOwnPackage и ее локальных зависимостей:

pip install . --process-dependency-links

Он устанавливает все рекурсивные зависимости, если все репозитории построены и установлены правильно, как описано выше.

--process-dependency-links был удален в последней версии pip ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...