Подтвердить что ты не робот

Замораживание пива для пакетов, установленных с помощью --target

Я хотел бы использовать для небольшого проекта Python этот способ управления зависимыми модулями: http://blog.zoomeranalytics.com/pip-install-t/

Вкратце, я бы сделал:

cd myproject

pip install --target ./pip-libs --upgrade -r requirements.txt

затем добавьте. /pip -libs в PYTHONPATH и запустите мой script.

Кажется, но мне нравится использовать замораживание использования pip, и это не позволяет мне делать что-либо вроде

pip freeze --target pip-libs

чтобы увидеть пакеты, установленные в папке. Конечно, я могу заглянуть внутрь, но что такое стандартный способ показывать пакеты, установленные в папке с помощью --target? Единственный способ, которым я могу думать, - это сделать ls из pip-libs, а затем играть с grep, awk... Не кажется правильным.

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

Python 2.7.9.

4b9b3361

Ответ 1

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

Вы можете посмотреть pip show, который содержит информацию о том, где они установлены (см. https://pip.pypa.io/en/stable/reference/pip_show/), но вам придется писать некоторые sed/awk или аналогичные, чтобы сделать grep в строке "Location", а затем вернуться и получить имя пакета.

Другой вариант - просто посмотреть на папки в установочной папке и вручную определить, какие пакеты, где из этого... что-то вроде:

ls ./pip-libs | grep -v .dist-info

Ответ 2

Это должно работать

PYTHONPATH=./pip-libs pip freeze