Какая польза от pip --user в Windows? - PullRequest
3 голосов
/ 25 июня 2019

Я знаю, что когда я устанавливаю пакеты Python в Linux, мне нужно использовать параметр --user в pip, чтобы установить пакет в моем домашнем каталоге, в противном случае мне понадобятся привилегии root.Но в Windows кажется, что независимо от того, использую я эту опцию или нет, пакет всегда будет установлен в моем домашнем каталоге (C:\Users\{username}\...), но конкретный путь будет немного другим.С опцией --user пакет будет установлен на c:\users\{username}\appdata\roaming\python\python37\site-packages, а без этой опции пакет будет установлен на c:\users\{username}\appdata\local\programs\python\python37-32\lib\site-packages.

C:\>pip3 install pyyaml
Collecting pyyaml
  Using cached https://files.pythonhosted.org/packages/45/19/53c041b8719eaf88ce1cdb51bea1c5a2844433e79c23a2a8aeeaa0e27fd8/PyYAML-5.1.1-cp37-cp37m-win32.whl
Installing collected packages: pyyaml
Successfully installed pyyaml-5.1.1

C:\>pip3 show pyyaml
Name: PyYAML
Version: 5.1.1
Summary: YAML parser and emitter for Python
Home-page: https://github.com/yaml/pyyaml
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Location: c:\users\{username}\appdata\local\programs\python\python37-32\lib\site-packages
Requires:
Required-by:

C:\>pip3 uninstall pyyaml
Uninstalling PyYAML-5.1.1:
  Would remove:
    c:\users\{username}\appdata\local\programs\python\python37-32\lib\site-packages\_yaml.cp37-win32.pyd
    c:\users\{username}\appdata\local\programs\python\python37-32\lib\site-packages\pyyaml-5.1.1.dist-info\*
    c:\users\{username}\appdata\local\programs\python\python37-32\lib\site-packages\yaml\*
Proceed (y/n)? y
  Successfully uninstalled PyYAML-5.1.1

C:\>pip3 install --user pyyaml
Collecting pyyaml
  Using cached https://files.pythonhosted.org/packages/45/19/53c041b8719eaf88ce1cdb51bea1c5a2844433e79c23a2a8aeeaa0e27fd8/PyYAML-5.1.1-cp37-cp37m-win32.whl
Installing collected packages: pyyaml
Successfully installed pyyaml-5.1.1

C:\>pip3 show pyyaml
Name: PyYAML
Version: 5.1.1
Summary: YAML parser and emitter for Python
Home-page: https://github.com/yaml/pyyaml
Author: Kirill Simonov
Author-email: xi@resolvent.net
License: MIT
Location: c:\users\{username}\appdata\roaming\python\python37\site-packages
Requires:
Required-by:

Все команды были запущены от имени обычного пользователя,не Администратор.

Так, как использовать опцию pip --user в Windows?Нужно ли использовать опцию --user при установке пакетов?

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Это действительно сбивает с толку, как установщик Windows Python обрабатывает место установки с настройками по умолчанию (которые вы, скорее всего, использовали).

Согласно документации , когда вы запускаете установщик и простонажмите «Установить сейчас»:

  • Вы будете не быть администратором (если не требуется обновление системы для библиотеки времени выполнения C или если вы устанавливаете Python Launcherдля Windows для всех пользователей)
  • Python будет установлен в ваш каталог пользователей
  • Python Launcher для Windows будет установлен в соответствии с параметром внизу первой страницы.

Теперь, опция для запуска Python: также выбран по умолчанию.Это означает, что если ваша учетная запись пользователя находится в группе «Администратор» (как правило, она есть), Python (python.exe) будет установлен в вашу директорию %LocalAppData% (как вы заметили).Тем не менее, установщик все равно выдаст вам приглашение UAC, чтобы подтвердить, что у вас есть права администратора, так как он также хочет установить Python Launcher (py.exe).В результате вы получаете локальную «только для меня» установку Python в вашем пользовательском каталоге, хотя по какой-то нематериальной причине Launcher устанавливается «для всех пользователей».

Если вы действительно хотите иметь общесистемную системуУстановка Python, вам нужно выбрать «Настройка установки» на первом экране установщика, затем нажать «Далее» и установить флажок «Установить для всех пользователей» - в противном случае это не проверяется.Тогда в качестве места установки по умолчанию будет использоваться каталог %ProgramFiles%, обычно C:\Program Files.

Когда вы выполняете установку пользователем с помощью pip, он помещает пакеты в каталог %AppData%, который AppData\Roaming в вашем профиле пользователя (как вы также заметили).Это делается для того, чтобы при наличии учетной записи «роуминга» в доменной сети ваши лично установленные пакеты следовали за вами, независимо от того, с какого компьютера в сети вы входите. Очевидно, что на этом компьютере должен быть установлен общесистемный Python.установка "для всех пользователей" - интерпретатора Python , а не почти не имеющего значения Python Launcher .Именно здесь поведение по умолчанию, описанное выше, имеет смысл ноль , поскольку вы не сможете запускать интерпретатор Python, установленный локально, в каком-то профиле другого пользователя при входе в систему.на их компьютер.

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

Итог: если вы хотите правильно настроить этонастройте установку так, чтобы она была установлена ​​в какой-то каталог, который на самом деле доступен для всех пользователей.Лично мне нравится помещать его в C:\programs\Python, так как тогда я могу pip install что-нибудь для всех и даже не нуждаюсь в повышенном приглашении - что было бы для записи в C:\Program Files.С другой стороны, в зависимости от обстоятельств может потребоваться запрос повышенного разрешения.

0 голосов
/ 25 июня 2019

Если вы вошли в систему как администратор, когда пакет был установлен без опции --user, тогда пакет был бы установлен в каталог установки Lib/site-packages Python и стал бы доступным для всех учетных записей пользователей.Если вместо этого вы использовали опцию --user, то, как вы видели, пакет будет установлен "локально" и будет виден только учетной записи администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...