pip установить проект без копирования всей папки проекта - PullRequest
1 голос
/ 07 марта 2020

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

Это не проблема, когда я запускаю python setup.py install, потому что я четко определил, какие папки должны быть частью моего модуля и, конечно, все эти данные не включены. Кроме того, все эти данные исключены в .gitignore, .dockerignore и еще много чего. Однако pip не заботится об этом, поскольку в документации указано :

Во время обычной установки pip скопирует весь каталог проекта во временную папку и установит оттуда. Исключением является то, что pip исключит копирование каталогов .tox и .nox, присутствующих на верхнем уровне проекта.

Как я могу предотвратить копирование pip всей папки моего проекта и обеспечить его соблюдение содержимое моего тщательно написанного файла setup.py?


Справочная информация: Раньше я был доволен setup.py install, но недавно я хотел попробовать git pre-commit, который внутренне вызывает pip install ., чтобы построить проект. До сих пор я не использовал pip в качестве инструмента сборки для своих проектов, но я подумал, что это может быть хорошей возможностью, по крайней мере, сделать мой проект совместимым с pip, но пока безрезультатно ...

1 Ответ

0 голосов
/ 07 марта 2020

Это, кажется, давняя проблема в пипсах, с обсуждениями, по крайней мере, с 2014 года (см. выпуск # 2195 ).

Было несколько предложений для решения этой проблемы, например добавление поддержка pipignore файлов, которые работают как gitignore, но до сих пор единственное, что было реализовано, это добавление жестко закодированного правила в игнорирование папок .tox и .nox , что точно решает указанные c проблемы, которые есть у этих инструментов, но не проблема в целом.

Обходной путь - сначала создать исходный дистрибутив (sdist), а затем установить pip-пакет с этим исходным пакетом:

python setup.py sdist
pip install dist/<name>.tar.gz

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

...