Установка пипа | Как установить частный проект из локальной файловой системы при использовании require.txt?

Я пытаюсь понять, как правильно использовать python3.8 -m pip install для установки требований из requirements.txt И одновременно устанавливать определенные пакеты из локальной файловой системы, а не из репозитория. У нас есть несколько разных частных репозиториев, над которыми нам, возможно, придется работать одновременно для более крупных изменений.

Я обнаружил, что могу сделать это как две отдельные команды. Сначала python3.8 -m pip install -r requirements.txt --index-url https://private/repo/dependency/simple, а потом python3.8 -m pip install path/to/dependency. Но я бы хотел объединить их в одну команду, если это возможно. Это позволит избежать необходимости генерировать токены доступа и управлять ими как часть URL-адреса индекса для каждого разработчика.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
75
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я думаю, вы можете попробовать напрямую указать свой путь в своем requirements.txt

так:

# Packages
package1==X.0.0
package2==X.0.0

# Local Packages 
/path/to/local/dependency1

Я бы предпочел не изменять файл требований.txt, если это возможно, но это хороший запасной метод.

Ryan Pierce Williams 27.06.2024 10:16

Возможно, вы сможете создать новый requirements.txt и запустить его в той же строке:

В PowerShell:

cat requirements.txt > myRequirements.txt
echo path/to/dependency >> myRequirements.txt
python3.8 -m pip install -r myRequirements.txt

В большинстве оболочек Unix что-то вроде

printf '%s\n' \
    '-r requirements.txt' \
    'path/to/dependency' >myRequirements.txt
pip install -r myRequirements.txt

Если вы настаиваете на создании однострочной строки, вы можете заменить каждую обратную косую черту ничем, а каждую оставшуюся новую строку - точкой с запятой ;

Основная идея хороша, но в деталях есть несколько ошибок. Попробуйте printf '%s\n' '-r requirements.txt' 'path/to/local' >myRequirements.txt

tripleee 27.06.2024 12:23

нет, ошибок в коде нет

Sebastien T 27.06.2024 14:01

Это пшш, если ты сомневаешься

Sebastien T 27.06.2024 14:07

Это создаст одну строку, которая не является допустимым форматом requirements.txt. .\ — это ошибка на любой платформе, отличной от Windows, и в любом случае она совершенно не нужна.

tripleee 27.06.2024 14:29

да, ты прав насчет .\ я его модифицирую

Sebastien T 27.06.2024 14:32

Он по-прежнему создает файл только с одной строкой.

Charles Duffy 27.06.2024 14:42

Нет, это невероятно говорить такое. Откройте PowerShell и введите echo one two > test.txt Сейчас cat test.txt. вы увидите 2 строки

Sebastien T 27.06.2024 14:53

окей, на самом деле ты прав, в классическом bash все по-другому, там всего одна строка.

Sebastien T 27.06.2024 15:02

«классический bash», и ash, и Dash, и ksh, и zsh, и вообще все остальное, кроме powershell. Пользователи Windows составляют здесь меньшинство; вы не можете предполагать, что у всех вообще есть powershell.

Charles Duffy 27.06.2024 15:03

и ? Я на пшш и дал понять с самого начала

Sebastien T 27.06.2024 15:05

Нет, в вашем ответе Powershell вообще не упоминается.

tripleee 27.06.2024 15:06

пожалуйста, вы ответили на комментарий, а не на основной ответ, где я четко упоминаю, что нахожусь под pwsh. В любом случае, в следующий раз, когда я захочу кому-то помочь, я постараюсь быть более откровенным, это был мой первый вклад в стек. В любом случае, хорошего дня тебе

Sebastien T 27.06.2024 15:10

Вы можете редактировать свои ответы, чтобы улучшения не пришлось ждать до следующего раза. Было бы неплохо указать «in powershell:» перед существующим сегментом кода. Добавление отдельного раздела «в других оболочках:» было бы еще лучше.

Charles Duffy 27.06.2024 15:11

Я сделаю это, спасибо

Sebastien T 27.06.2024 15:13
Ответ принят как подходящий

pip позволяет вам указать несколько пакетов.

pip install path/to/local/package1 \
    path/to/another/package2 \
    -r requirements.txt

Если path/to/local/package1 переопределяет пакет, который также упоминается в requirements.txt, Pip предпочтет пакет, указанный ранее в командной строке, а затем просто придет к выводу, что требование уже выполнено, как только он снова найдет его в requirements.txt.

Проблема в том, что дополнительная зависимость (по крайней мере, на данный момент) находится в файле требований.txt. Если я просто подготовлю его, как вы это сделали здесь, он все равно отправится в репозиторий, чтобы получить его при обработке документа с требованиями. Если я не включу параметр --index-url, пакет не удастся установить. И я хочу, чтобы это присутствовало в документе с требованиями; Я просто хочу иногда переопределить, откуда его тянет.

Ryan Pierce Williams 27.06.2024 15:11

Это не мой опыт. Если я передам --index-url, то индекс будет загружен, но локальный пакет, явно указанный с его дисковым путем, будет иметь приоритет над неустановленным пакетом в индексе. Если пакет уже был установлен по другим причинам, это может объяснить то, что вы видите.

tripleee 27.06.2024 15:17

Хм. Есть ли способ проверить из командной строки pip, откуда был загружен данный установленный пакет? Я беру проект у бывшего коллеги, но с Python я особо не разбирался :P

Ryan Pierce Williams 27.06.2024 15:20

Неважно — я смог подтвердить, что этот подход работает для меня :)

Ryan Pierce Williams 27.06.2024 15:38

Я не думаю, что pip записывает, откуда пришла посылка. Если у вас есть журналы мероприятия, они должны включать эту информацию.

tripleee 27.06.2024 15:39

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

Похожие вопросы

Макет столбца внутри формы отправки с подсветкой
Azure получает список EID с помощью API
Превратите список кортежей в фрейм данных pandas с одним столбцом
Pandas сжимает строки, когда данные отсутствуют
Передача переменных конфигурации в функции, чтобы они вели себя как константы времени компиляции
Когда я запускаю поэтическую оболочку на MacOS с оболочкой ZSH, выдает ошибку «команда не найдена»
Развертывание веб-приложения Python (Dash) в Azure, конвейер работает слишком долго, а колесо создания сообщений для панд все еще работает. Как оптимизировать?
Как мне заставить селен последовательно находить и использовать элемент при создании викторины Kahoot?
Как извлечь подстроки непосредственно перед ближайшим знаком препинания?
Используя Postgres/Flask, как я могу запросить следующее появление запланированной задачи, когда дни/часы/минуты хранятся как целые числа в своих собственных столбцах?