Используйте относительный путь в файле требований .txt, чтобы установить файл tar.gz с помощью pip

Мы используем файл requirements.txt для хранения всех необходимых внешних модулей. Каждый модуль, кроме одного, собирается из Интернета. Другой хранится в папке под файлом requirements.txt.

BTW, этот модуль можно легко установить с помощью pip install

Я пробовал использовать это:

file:folder/module

или это:

file:./folder/module

или даже это:

folder/module

но всегда вызывает ошибку. Кто-нибудь знает, что это правильный способ сделать это?

Спасибо

Ответ 1

В текущей версии pip (1.2.1) способ интерпретации относительных путей в файле требований неоднозначен и полуразрушен. В репозитории pip имеется открытая проблема, которая более подробно объясняет различные проблемы и двусмысленности:

https://github.com/pypa/pip/issues/328

Короче говоря, текущая реализация не соответствует описанию в документации на pip, так что на момент написания этой статьи нет последовательного и надежного способа использования относительных путей в requirements.txt.

СЧИТАЕТ, добавив следующее в мой requirements.txt:

./foo/bar/mymodule

работает, когда на верхнем уровне каталога mymodule находится setup.py. Обратите внимание на отсутствие обозначения протокола file:: и включение ведущего ./. Этот путь не относится к файлу requirements.txt, а относится к текущему рабочему каталогу. Поэтому необходимо перейти в тот же каталог, что и requirements.txt, а затем запустить команду:

pip install -r requirements.txt