Замораживание пива для пакетов, установленных с помощью --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.
Ответы
Ответ 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