Есть пакет python с открытым исходным кодом, над которым я хочу работать (toga-android). Чтобы протестировать код, который я пишу, я должен иметь возможность создать свой собственный проект, в котором в качестве зависимости указан пакет с открытым исходным кодом. Мой проект должен быть построен с помощью setuptools, поэтому мне нужны setuptools для выполнения зависимости с использованием моей версии пакета, а не для получения пакета из PyPI. Проблема в том, что setuptools всегда получает пакет от PyPI.
Всякий раз, когда я создаю с помощью setuptools, я вижу:
Collecting toga-android==0.3.0.dev8
или же
Collecting toga-android==0.3.0.dev8
Очевидно, он получает пакет из PyPI или использует его кешированную версию.
Я установил свою версию с помощью pip install -e .
, и это ни на что не влияет. Я также попытался включить исходный код пакета в каталог моего проекта с помощью setup.py. Setuptools, по-видимому, включает этот код, потому что синтаксические ошибки приводят к сбою сборки, но не распознают, что она может удовлетворить зависимость. Он по-прежнему получает пакет из PyPI, и все модули, импортированные из пакета, являются версиями PyPI.
Как я могу использовать пользовательскую версию пакета, которая также находится в PyPI, в качестве зависимости от setuptools?
Действия по воспроизведению:
pip install портфель (использование или неиспользование virtualenv не имеет значения)
git clone https://github.com/pybee/toga.git
cd ~ / toga / src / core; sudo pip install -e.
cd ~ / toga / src / android /; sudo pip install -e.
cd ~ / toga / examples / tutorial0
python setup.py android
Вывод покажет, что загружена более старая версия toga-android, хотя она уже была установлена с помощью pip.
Да, они совпадают. Кроме того, если номер установленной версии обновлен по сравнению с тем, что находится в PyPI, и setup.py изменен для соответствия, сборка завершается ошибкой, и setuptools объявляет, что не может удовлетворить зависимость.
Прекратите использовать sudo pip install
, вы устанавливаете не для того пользователя ..
Звучит разумно. pip list (без sudo) по-прежнему будет показывать его как установленный. Но, думаю, возникает вопрос: как мне бороться с PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.6/site-packages/toga_core-0.2.15.dist-info'
?
Используя pip install --user
. Это не связано с вашим вопросом, кстати (вы, вероятно, захотите поэкспериментировать с --no-index
или --no-deps
или чем-то еще)
setuptools
тут ни при чем, это briefcase
, определяющий собственную логику установки. Конкретная линия, с которой вы испытываете трудности, - Вот этот.
Какую версию
toga-android
вы установили и какая версия зависимости объявлена в сценарии установки, совпадают ли они? Также рассмотрите возможность создания mcve.