Vraag Wat is het doel "pip install --user ..."?


Van pip install --help:

 --user      Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
             Windows. (See the Python documentation for site.USER_BASE for full details.)

De documentatie voor site.USER_BASE is een angstaanjagend wormgat met interessant * NIX-onderwerp dat ik niet begrijp.

Wat is het doel van --user In gewoon Engels? Waarom zou het pakket aan ~/.local/ er toe doen? Waarom niet gewoon ergens een uitvoerbaar bestand in mijn $ PATH plaatsen?


48
2018-03-23 23:44


oorsprong


antwoorden:


pip gebruikt standaard het installeren van Python-pakketten in een systeemdirectory (zoals /usr/local/lib/python3.4). Dit vereist root-toegang.

--user maakt pip-installatiepakketten in plaats daarvan in uw homedirectory, waarvoor geen speciale rechten nodig zijn.


56
2018-03-23 23:50



--user-- installeert in site.USER_SITE. Meer documentatie in hier

Voor mijn geval was dat het geval /Users/.../Library/Python/2.7/bin. Dus ik heb dat toegevoegd aan mijn PATH (in ~/.bash_profile het dossier):

export PATH=$PATH:/Users/.../Library/Python/2.7/bin

5
2018-03-12 21:52



Op een MAC OS, de reden voor het gebruik van de --user vlag is om ervoor te zorgen dat we de bibliotheken waar het besturingssysteem op vertrouwt niet beschadigen. EEN conservatief aanpak voor veel MAC OS-gebruikers is om te voorkomen dat je pip installeert of bijwerkt met een opdracht die dat vereist sudo. Dit omvat dus het installeren van /usr/local/bin...

Ref: Installeren van python voor Neovim (https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim)

ik ben niet alle duidelijk waarom installeren in /usr/local/bin is een risico voor een MAC gezien het feit dat het systeem alleen afhankelijk is van python binaries in /Library/Frameworks/ en /usr/bin. Ik vermoed dat dit komt omdat, zoals hierboven vermeld, installeren in /usr/local/bin vereist sudo wat de deur opent naar het maken van een dure fout met de systeembibliotheken. Dus installeren in ~/.local/bin is een zekere manier om dit risico te vermijden.

Ref: Python gebruiken op een Mac (https://docs.python.org/2/using/mac.html)

Tot slot is er in de mate dat het een voordeel is om pakketten te installeren in de /usr/local/bin, Ik vraag me af of het zinvol is om de eigenaar van de directory van te veranderen root naar user? Dit zou moeten vermijden om te gebruiken sudo terwijl het nog steeds beschermt tegen het maken van systeemafhankelijke wijzigingen.* Is dit een beveiligingsstandaard een overblijfsel van hoe Unix-systemen in het verleden (als servers) vaker werden gebruikt? Of op zijn minst een goede manier om te gaan voor MAC-gebruikers die geen server hosten?

* Opmerking: Mac's System Integrity Protection (SIP) -functie lijkt ook de gebruiker te beschermen tegen het wijzigen van de systeemafhankelijke bibliotheken.

- E


4
2017-12-17 16:20