В документации pip
не хватает слишком много слов (на моих глазах), о параметрах для работы с источником и получателями.
Я испытал странные вещи, устанавливающие Sphinx с помощью pip3
и играя с доступными параметрами, чтобы, по-видимому, позволить мне установить его именно там, где я хотел (по некоторым причинам, я хочу иметь каждую вещь в своем собственном каталоге). Я говорю "играть", не то, что я не читал документ и не пробовал --help
, а потому, что pip3 help install
не помог, а официальная документация pip install страница слишком короткая и на самом деле говорит не больше, чем pip3 help install
.
Вот эксперименты и наблюдения.
Первый случай с --root
I скачал текущий tar-архив репозитория Sphinx, распаковал его, попал во вновь созданный каталог и сделал:
pip3 install --root /home/<user-name>/apps/sphinx -e .
Хотя это будет то же самое, что и --prefix
, поскольку не было опции --prefix
, видимо доступной. К моему удивлению, он установил команды в каталоге bin
Python3 (который также установлен локально в своем собственном каталоге) вместе с некоторыми вещами в его библиотечном каталоге и странным, вместо каталога /home/<user-name>/apps/sphinx
, я получаю /home/<user-name>/apps/sphinx/home/<user-name>/apps/sphinx/…
: он добавил указанный путь к себе.
Как особенно последний пункт имеет смысл? Какова цель --root
?
Второй случай с --target
Тогда, если это не --root
, это может быть --target
, поэтому я сделал (после очистки):
pip3 install --target /home/<user-name>/apps/sphinx -e .
Это не сработало, жалуясь на непризнанную опцию --home
.
Что это за --home
(который я не указал), о котором он жалуется, и что такое --target
?
Третий случай с --install-option='--prefix=…'
После некоторого веб-поиска и потока на StackOverflow я пробовал это:
pip3 install --install-option='--prefix=/home/<user-name>/apps/sphinx' -e .
Он просто жаловался, что не может установить файл .pth
, и что-то не так с моим PYTHONPATH
, который был перенаправлен для повторного запуска с добавлением определения переменной:
export PYTHONPATH=/home/<user-name>/apps/sphinx/lib/python3.4/site-packages
pip3 install --install-option='--prefix=/home/<user-name>/apps/sphinx' -e .
Мне просто пришлось установить набор PYTHONPATH
еще до того, как каталог действительно существует и что-то в нем было установлено, но это было ОК (нужно ли /t pip
обновлять PYTHONPATH
) во время процесса и напомнить, чтобы установить это окончательно, является спорным вопросом).
Этот вариант, который был хорошим, также был менее заметным.
Другой последний связанный:
Какая разница между --editable
и --src
?
Обновление # 1
Я не могу сказать, связано ли это Сфинкс, но я заметил еще две вещи.
Выполнение
pip3 install --install-option='--prefix=<install-dir>' -e <repository-dir>
где repository-dir является локальной проверкой Sphinx, Sphinx устанавливается в install-dir, указан в pip3 list
, но не может быть удален.
Наоборот, делая
pip3 install --install-option='--prefix=<install-dir>' Sphinx
то есть, если pip3
получить архив, Sphinx не установлен в install-dir, он устанавливается в каталоге python, указан в pip3 list
и может быть удален.
В зависимости от того, является ли источник локальным репозиторием или удаленным архивом, он не будет установлен в том же месте и не будет или будет удалён.
Зависимости не были затронуты, обрабатывались одинаково в обоих случаях (устанавливались там, где они ожидались, указывались и удалялись).
Обновление # 2
Поведение с --root
заставляет меня думать о каком-то поддельном корне (как тот, который вы получаете при создании пакета Debian или при кросс-компиляции). Если он намеревался быть тем же, то путь, который меня удивил, - это, наоборот, ожидаемый.