Setuptools, используйте пакет в локальной системе вместо получения его из PyPI

Есть пакет python с открытым исходным кодом, над которым я хочу работать (toga-android). Чтобы протестировать код, который я пишу, я должен иметь возможность создать свой собственный проект, в котором в качестве зависимости указан пакет с открытым исходным кодом. Мой проект должен быть построен с помощью setuptools, поэтому мне нужны setuptools для выполнения зависимости с использованием моей версии пакета, а не для получения пакета из PyPI. Проблема в том, что setuptools всегда получает пакет от PyPI.

Всякий раз, когда я создаю с помощью setuptools, я вижу:

Collecting toga-android==0.3.0.dev8

Downloading https://files.pythonhosted.org/packages/92/fe/348a39e2e0bbcac2d3ed511dd2b62943b488e7dcb8097c437416caf1c179/toga_android-0.3.0.dev8-py3-none-any.whl

или же

Collecting toga-android==0.3.0.dev8

Using cached https://files.pythonhosted.org/packages/92/fe/348a39e2e0bbcac2d3ed511dd2b62943b488e7dcb8097c437416caf1c179/toga_android-0.3.0.dev8-py3-none-any.whl

Очевидно, он получает пакет из PyPI или использует его кешированную версию.

Я установил свою версию с помощью pip install -e ., и это ни на что не влияет. Я также попытался включить исходный код пакета в каталог моего проекта с помощью setup.py. Setuptools, по-видимому, включает этот код, потому что синтаксические ошибки приводят к сбою сборки, но не распознают, что она может удовлетворить зависимость. Он по-прежнему получает пакет из PyPI, и все модули, импортированные из пакета, являются версиями PyPI.

Как я могу использовать пользовательскую версию пакета, которая также находится в PyPI, в качестве зависимости от setuptools?

Действия по воспроизведению:

  1. pip install портфель (использование или неиспользование virtualenv не имеет значения)

  2. git clone https://github.com/pybee/toga.git

  3. cd ~ / toga / src / core; sudo pip install -e.

  4. cd ~ / toga / src / android /; sudo pip install -e.

  5. cd ~ / toga / examples / tutorial0

  6. python setup.py android

  7. Вывод покажет, что загружена более старая версия toga-android, хотя она уже была установлена ​​с помощью pip.

Какую версию toga-android вы установили и какая версия зависимости объявлена ​​в сценарии установки, совпадают ли они? Также рассмотрите возможность создания mcve.

hoefling 16.05.2018 09:06

Да, они совпадают. Кроме того, если номер установленной версии обновлен по сравнению с тем, что находится в PyPI, и setup.py изменен для соответствия, сборка завершается ошибкой, и setuptools объявляет, что не может удовлетворить зависимость.

user2407621 17.05.2018 04:00

Прекратите использовать sudo pip install, вы устанавливаете не для того пользователя ..

wim 17.05.2018 04:54

Звучит разумно. pip list (без sudo) по-прежнему будет показывать его как установленный. Но, думаю, возникает вопрос: как мне бороться с PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.6/site-packages/toga_core-0.2.15.dist-info‌​'?

user2407621 17.05.2018 05:07

Используя pip install --user. Это не связано с вашим вопросом, кстати (вы, вероятно, захотите поэкспериментировать с --no-index или --no-deps или чем-то еще)

wim 17.05.2018 05:33
setuptools тут ни при чем, это briefcase, определяющий собственную логику установки. Конкретная линия, с которой вы испытываете трудности, - Вот этот.
hoefling 17.05.2018 15:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
141
0

Другие вопросы по теме