Установка пипа | Как установить частный проект из локальной файловой системы при использовании 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 можно создавать веб-скраперы для извлечения данных из веб-сайтов.


75
3

Ответы:

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

так:

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

# Local Packages 
/path/to/local/dependency1

Возможно, вы сможете создать новый 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

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


Решено

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

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

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