Pip: ๊ธฐ๋ณธ๊ฐ’์€ --user

์— ๋งŒ๋“  2014๋…„ 03์›” 21์ผ  ยท  170์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pip

pip๊ฐ€ OS Python์ด ์„ค์น˜๋œ ์‹œ์Šคํ…œ์— ์„ค์น˜๋˜๋ฉด ํ˜„์žฌ pip install foo ์— ํŒŒ์ผ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‚ฌ๋žŒ๋“ค์€ ์‹œ์Šคํ…œ Python์— ์ „์—ญ์ ์œผ๋กœ ์„ค์น˜๋˜๋Š” sudo pip install foo ๋ฅผ ๋Œ€์‹  ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ด ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ์‹œ์Šคํ…œ ์ˆ˜์ค€ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด pip๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚ด ์˜๋„๋Š” pip๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ --user๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๊ฒƒ์€ Windows์™€ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒŒ ๋ง์ด ๋˜๋‚˜์š”?
  • ์ด๊ฒƒ์€ altinstall'd Python๊ณผ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๊นŒ? ํŠนํžˆ https://github.com/yyuu/pyenv ์™€ ๊ฐ™์€ ๋„๊ตฌ๋กœ ์„ค์น˜๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€
  • ์‚ฌ๋žŒ๋“ค์ด pip๋ฅผ ๋ฃจํŠธ๋กœ ํ˜ธ์ถœํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ํ•ฉ๋‹ˆ๊นŒ? /root/.local/ ์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ get-pip ๋ฐ pypa ์„ค์น˜ ์ง€์นจ ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?
  • ~/.local/bin์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ $PATH์— ์—†์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?
  • --user ์„ค์น˜๋Š” ์ „์—ญ easy_install d ํŒจํ‚ค์ง€๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋งค์šฐ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ๊ด€๋ จ๋œ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. #624 #1443 #1153 #1500 #1051

/cc @ncoghlan

user scheme auto-locked enhancement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๋ฐค์— --user ์˜ต์…˜์ด ๊ธฐ๋ณธ๊ฐ’์ด ๋˜๋Š” ๊ฟˆ์„ ๊พธ์—ˆ์Šต๋‹ˆ๋‹ค(๋†๋‹ด ์•„๋‹˜). ๋‚ด ๊ฟˆ์ด ๊ณง ์ด๋ฃจ์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  170 ๋Œ“๊ธ€

์ด๊ฒƒ์€ pypa ์„ค์น˜ ์ง€์นจ์—์„œ ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

ํ˜„์žฌ ๋ฃจํŠธ ๋˜๋Š” ๊ด€๋ฆฌ์ž ์•ก์„ธ์Šค์— ๋Œ€ํ•œ ์–ธ๊ธ‰์€ ๊ฐ์ฃผ์— ์žˆ์œผ๋ฏ€๋กœ ์ง€์นจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค( get-pip ๊ฐ€ ์ž๋™์œผ๋กœ --user ๋กœ ๊ธฐ๋ณธ ์„ค์ •๋œ๋‹ค๊ณ  ๊ฐ€์ •). ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํ˜„์žฌ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ์ ์šฉ๋˜๋Š” ์„ค์น˜๋กœ ๋๋‚  ๊ฒƒ์ž„์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

--user ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๊ด€๊ณ„์—†์ด ํ˜„์žฌ ์ง€์นจ์€ ๋ฐ๋น„์•ˆ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๋ฐฐํฌํŒ์ด Surepip์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ pip๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐพ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๊ณ  ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์žฅ๊ธฐ์ ์œผ๋กœ ์ €๋Š” ๊ทธ๋“ค์ด ๊ณ„์† ํ™œ์„ฑํ™”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋‹จ์ง€ ๊ทธ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด๊ณ  ์žˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” pip๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์œ„์น˜์— ๋Œ€ํ•œ ๊ฒƒ์œผ๋กœ ์„ค๋ช…๋˜์ง€๋งŒ ๊ฑฐ์˜ ๋” ์ค‘์š”ํ•œ(์ ์–ด๋„ ๋‚˜์—๊ฒŒ) ์ด๊ฒƒ์€ ๊ฐ„์ ‘์ ์œผ๋กœ get-pip ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ pip๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ์œ„์น˜์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ altinstall'd Python๊ณผ ์–ด๋–ป๊ฒŒ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๊นŒ?
ํŠนํžˆ https://github.com/yyuu/pyenv ์™€ ๊ฐ™์€ ๋„๊ตฌ๋กœ ์„ค์น˜๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€

์‚ฌ์šฉ์ž ์ฒด๊ณ„๋Š” .local/lib/pythonX.Y/site-packages ์ด๋ฏ€๋กœ ๋™์ผํ•œ ์ฃผ/๋ถ€ ๋ฒ„์ „์œผ๋กœ ์—ฌ๋Ÿฌ ํŒŒ์ด์ฌ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ ์—‰๋ง์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ํŒŒ์ด์ฌ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ด์™€ ๊ฐ™์€ ๋„๊ตฌ์˜ ๊ฒฝ์šฐ pip๋ฅผ ์ „์—ญ ๋ชจ๋“œ์— ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

redhat/fedora ๋ฒ„๊ทธ ์ถ”์ ๊ธฐ https://bugzilla.redhat.com/show_bug.cgi?id=662034#c10 ๊ด€๋ จ ๋ฌธ์ œ

Fedora/RedHat PATH=$PATH:$HOME/.local/bin:$HOME/bin ๊ฐ€ ์ด๋ฏธ /etc/skel/.bash_profile ์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด --user ๋กœ ์„ค์น˜๋œ ํ•ญ๋ชฉ์ด ์ตœ์†Œํ•œ bash ์‚ฌ์šฉ์ž(๊ธฐ๋ณธ ์…ธ)์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณ„์† ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์— ์ด๋ฏธ ์ด ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์•„๋Š” Windows์— ๋Œ€ํ•ด ํŠน๋ณ„ํžˆ ๋‹ค๋ฅธ ์ ์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์˜ PATH์— ํ‘œ์ค€ Python ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋ณ„ ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์–ป๋Š” ๊ฒƒ์ด ํŠนํžˆ ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ์ˆ ์ ์ธ ์–ด๋ ค์›€๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. %LOCALAPPDATA% ์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‹œ์Šคํ…œ ์ˆ˜์ค€ %PATH% ๋„ฃ์–ด๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :-(

๋‚˜๋Š” ์ด๊ฒƒ์„ ์„œ๋‘๋ฅด๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์„ค์น˜์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๊ฒฝํ—˜์ด ์žˆ๊ณ  ๋ฌธ์ œ๋ฅผ ๋จผ์ € ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ญ๊ณผ ๋‹ฌ๊ฑ€์˜ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ๋ณ€ํ™”๋ฅผ ์„œ๋‘๋ฅด๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋œ๋‹ค๊ณ  ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Windows ๋ชจ์ž๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ์ƒํƒœ์—์„œ sudo๋ฅผ ๋ถ€์ฃผ์˜ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ฆฌ์„์€ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์ด ๋‚˜์˜๋‹ค๋Š” ๊ฒƒ์„ ์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ Unix ์‚ฌ์šฉ์ž๋ฅผ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ์ข‹์€ ์ •๋‹นํ™”๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. .

๋‚˜๋Š” ์ด๊ฒƒ์ด ์‹œ์Šคํ…œ Python์—์„œ pip๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งŒ ์ ์šฉ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

Windows์˜ ๋‹ค๋ฅธ ์ ์€ ์‹œ์Šคํ…œ ์ œ๊ณต Python ํŒจํ‚ค์ง€์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” *nix์™€ ๊ฐ™์€ Python ์ œ๊ณต ์‹œ์Šคํ…œ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๋‚˜๋Š” ํŠน๋ณ„ํžˆ ์ด๊ฒƒ์„ ์„œ๋‘๋ฅด๊ณ  ์‹ถ์ง€๋„ ์•Š๋‹ค. ํ† ๋ก ์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์—ˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ฃจํŠธ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋กœ ๊ฐ€์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— sudo pip install ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์‹ค์ œ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰ํ•  ๋•Œ --user ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์‚ฌ๋žŒ๋“ค์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์‹ ์ด ์–ป๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ์„œ pip install ๊ถŒํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ --user ๋ฅผ ์ œ์•ˆํ•˜๋”๋ผ๋„ ์—ฌ์ „ํžˆ ์ตœ๊ณ ์˜ UX๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

Fedora ์ง์› ์ค‘ ํ•œ ๋ช…๊ณผ ์ด์•ผ๊ธฐํ•˜๋ฉด์„œ, ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๊ถŒํ•œ ํ™•์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. site-packages ๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ๊ถŒํ•œ์ด ์žˆ๋Š” ์‚ฌ์šฉ์ž์ด๊ณ  pip๊ฐ€ ์ „์—ญ Python์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž์ด๊ณ  --user ์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

Windows๊ฐ€ ์ง„ํ–‰๋˜๋Š” ํ•œ, ๊ธฐ๋ณธ์ ์œผ๋กœ Python์„ ๊ถŒํ•œ์ด ์—†๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์„ค์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ”ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ pip๋Š” ์ „์—ญ์ ์œผ๋กœ ์„ค์น˜ํ•  ๋•Œ UAC๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋Œ€์‹  Program Files์— ์„ค์น˜ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜๋ฉด UAC๋Š” pip๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค(์ด๊ฒƒ๋„ ๊ดœ์ฐฎ์Œ). ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ์ž๋ณ„ ์„ค์น˜๋ฅผ ์„ ํƒํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

Paul์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Windows์˜ PATH์—๋Š” ์•„์ง _user_ scripts ๋””๋ ‰ํ† ๋ฆฌ(์ „์—ญ ๋””๋ ‰ํ† ๋ฆฌ๋งŒ)๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋Š” ํ™•์‹คํžˆ ๊ณ ๋ คํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

POSIX ์ธก๋ฉด์—์„œ ํฐ ์žฅ๋ฒฝ์ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด UX ์•„์ด๋””์–ด๋Š” ์–ด๋–ป๊ฒŒ ๋“ค๋ฆฌ๋‚˜์š”? ํœ  ๊ธฐ๋ฐ˜ ์„ค์น˜์˜ ๊ฒฝ์šฐ ์„ค์น˜ ๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ๋Œ€์‹  --user ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒƒ์ธ์ง€ ๋ฌป๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ? ์ƒˆ๋กœ์šด "--global" ๋˜๋Š” "--system" ํ”Œ๋ž˜๊ทธ๋Š” "no" ์‘๋‹ต์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ ๊ถŒํ•œ์ด ์ „์—ญ ์„ค์น˜์— ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹จ์ˆœํžˆ --user๋กœ ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กฌํ”„ํŠธ(--no-input์˜ ๊ฒฝ์šฐ ์ œ์™ธ)๋Š” ์•„๋งˆ๋„ ์ „ํ™˜ ๋‹จ๊ณ„์— ์ ํ•ฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„์น˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ถŒํ•œ์ด ์žˆ๋Š” ์œ„์น˜์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋ฉด Windows์—์„œ๋„ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. t ๊ทธ๋“ค์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

๋ณธ์งˆ์ ์œผ๋กœ ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ์‹คํŒจ ๋ชจ๋“œ๋ฅผ ํ›จ์”ฌ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

sudo์˜ ๋ถ€์ฃผ์˜ํ•œ ์‚ฌ์šฉ์„ ์•„์ง ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ Unix ์‚ฌ์šฉ์ž๋ฅผ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์–ด๋ฆฌ์„์€ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ผ์ž…๋‹ˆ๋‹ค.

sudo ๋ฐ ๋ณด์•ˆ์€ ์‹ค์ œ๋กœ ๋ถ€์ฐจ์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ์ฃผ๋กœ ์‹œ์Šคํ…œ ํŒŒ์ด์ฌ์—์„œ OS ํŒจํ‚ค์ง•๊ณผ pip ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ˜„์žฌ Linux ์‚ฌ์šฉ์ž๋Š” ์ข…์ข… ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์— ์ฒ˜ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. OS ๋ช…๋ น: 'OS pkg mgr์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. roque pip ์„ค์น˜ ํŒจํ‚ค์ง€( get-pip 'd pip ํฌํ•จ)'๋กœ ์‹œ์Šคํ…œ์„ ๊ฐ์—ผ์‹œํ‚ค์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
  2. ํ˜„์‹ค: "OS ํŒจํ‚ค์ง€(pip ํฌํ•จ)๊ฐ€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์—ˆ๊ณ  ์ผ๋ถ€ ํŒจํ‚ค์ง€์˜ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋ฐฐํฌํŒ์˜ ์‹คํ—˜์  ๋ฆด๋ฆฌ์Šค๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ถˆ๋Ÿ‰ํ’ˆ์ด ๋ฉ๋‹ˆ๋‹ค...."

๋˜ ๋‹ค๋ฅธ ๋‹จ๊ณ„๋Š” get-pip.py --user ํ•  ์ˆ˜ ์žˆ๊ณ  --user virtualenv (๋ฐ wheel ๋ฐ twine (virtualenv๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ)

FWIW, ๋ฐฐํฌํŒ ๊ณต๊ธ‰์—…์ฒด๋„ ํ˜„์ƒ ์œ ์ง€๋ฅผ ๋ฌธ์ œ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ํ•ต์‹ฌ OS ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์„ ํƒ์ ์ธ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์€ ๋‹ค์–‘ํ•œ ์„ฑ์ˆ™ ๋‹จ๊ณ„์— ์žˆ๊ณ  ์ตœ์ข… ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ผ๊ด€๋œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์†”๋ฃจ์…˜์„ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—…์ŠคํŠธ๋ฆผ ์ธก๋ฉด์—์„œ ํ•ด๊ฒฐํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Unix์—์„œ ๋ฐฐํฌํŒ๊ณผ ํ˜‘๋ ฅํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋„๋ก ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Windows๊ฐ€ ์•„๋‹Œ Unix์˜ ๊ธฐ๋ณธ๊ฐ’์„ --user ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ๋‹ค๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์ €๋Š” Unix์˜ ๋‚˜์œ ๊ฒฝํ—˜์—์„œ Windows์˜ ๋‚˜์œ ๊ฒฝํ—˜์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์€ ์ ˆ์ถฉ์•ˆ์œผ๋กœ ๋ณด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„์ง Windows์˜ --user ๊ฐ€ ํ™ฉ๊ธˆ๊ธฐ๋ฅผ ๋งž์ดํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

Windows์—์„œ pip _is_๋ฅผ ์‹คํ–‰ํ•  ๋•Œ UAC๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ์ƒ์Šน๋œ ์ฝ˜์†” ์ฐฝ์„ ์ œ์™ธํ•˜๊ณ  pip๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. pip ์‚ฌ์šฉ์ž๊ฐ€ "OK"๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ‹์ง„ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ GUI ์•ฑ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์€ ์ด๋ฟ์ž…๋‹ˆ๋‹ค...

@pfmoore pip install ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†์„ ๋•Œ Windows์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ์–ด๋– ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

FWIW Windows ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ด๊ฒƒ์„ ์„ ํƒ ์‚ฌํ•ญ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. "์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ํด๋”์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๊นŒ" ์ฒดํฌ๊ฐ€ ์„ค์น˜์˜ 99%์—์„œ ๋‹ฌ์„ฑ๋˜์ง€ ์•Š๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  --user์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ๊ฒฝํ—˜์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. site-packages ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ์˜ ๋น„์œจ์ž…๋‹ˆ๋‹ค.

์ฆ‰, ์ œ์•ˆ์ด ์ „์—ญ ์„ค์น˜๋ฅผ ์‚ฌ์šฉ์ž ์„ค์น˜๋กœ ๋Œ€์ฒดํ•˜์ง€ ์•Š๋Š” ๊ถŒํ•œ์„ ํ™•์ธํ•˜๋ฉด ๊ถŒํ•œ ์˜ค๋ฅ˜๊ฐ€ --user ์„ค์น˜๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค.

์ œ์•ˆ์ด ์ „์—ญ ์„ค์น˜๋ฅผ ์‚ฌ์šฉ์ž ์„ค์น˜๋กœ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ถŒํ•œ ์˜ค๋ฅ˜๋ฅผ --user install๋กœ ๋Œ€์ฒดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ถŒํ•œ ํ™•์ธ ์•„์ด๋””์–ด(#1048)๊ฐ€ ๊ฐ€์žฅ ์‰ฌ์šด ์ผ์ด ์•„๋‹˜์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.

Wheel ์ผ€์ด์Šค์—์„œ๋Š” ๋งค์šฐ ์‰ฌ์šธ ๊ฒƒ์ด๊ณ  sdist๋กœ 99.9% ์ผ€์ด์Šค๋ฅผ ๋ฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ํŽ‘ํ‚คํ•œ ์ผ์„ ํ•˜๋Š” setup.py์˜ ๋ฌธ์ œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

pip install ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•˜๊ณ  ๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ๊ถŒํ•œ์ด ์—†์„ ๋•Œ Windows์˜ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ์–ด๋– ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๊ธ€์Ž„, site-packages ๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ Windows์—์„œ ๋งค์šฐ ๋“œ๋ฌผ๊ธฐ ๋•Œ๋ฌธ์— ์งˆ๋ฌธ์ด ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด "์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค --user ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ?"๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„๋ช…ํ•œ ์ ‘๊ทผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ์œ ๋‹‰์Šค์—์„œ๋„ ๊ทธ๊ฒŒ ๋” ๋‚˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ๊ฐ€๋Šฅ์„ฑ์— ๋”ฐ๋ผ ๋™์ž‘์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์ดํ•˜๊ณ  ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๊ฐœ์ธ์ ์œผ๋กœ ๊ตฌ์ถ•ํ•œ Python์— --user ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์ธ์ง€ ์—ฌ๋ถ€๋Š” ๋ถ„๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” ๊ทธ๋Ÿฌํ•œ ์„ค์ •์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์ •ํ™•ํžˆ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ๊ทธ ์˜๊ฒฌ์„ ๋’ท๋ฐ›์นจํ•  ๊ฒƒ์ด ์•„๋ฌด๊ฒƒ๋„ ์—†๋‹ค.)

์ œ์•ˆ: ์œ„์™€ ๊ฐ™์ด --user ๋ฅผ ์ œ์•ˆํ•˜๋Š” ์˜ค๋ฅ˜๋กœ ์‹œ์ž‘ํ•˜์‹ญ์‹œ์˜ค. ์‚ฌ๋žŒ๋“ค์ด --user ๋ฅผ ๋” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๋” ๋งŽ์€ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Paul์ด ์ œ์•ˆํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋Œ€๋žต ์ œ๊ฐ€ ์—ผ๋‘์— ๋‘์—ˆ์ง€๋งŒ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋Œ€์‹  ์˜ˆ/์•„๋‹ˆ์˜ค ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‘ ๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์—๋Š” ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ์—์„œ ํ˜ธ์ถœํ•  ๋•Œ ์‹คํŒจํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ๋จ).

Python์— sys.localprefix์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ(์—ฌ๊ธฐ์„œ python-dev ์ฐธ์กฐ)?
Sys.localprefix๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ sys.prefix์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌํŒ์€ ์ ‘๋‘์‚ฌ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ์ ‘๋‘์‚ฌ = '/usr', localprefix='/usr/local'). Pip ๋ฐ easy_install์€ sudo๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ์„ค์น˜ํ•  ์œ„์น˜๋กœ sys.localprefix๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒฝ์šฐ --user๋กœ ํด๋ฐฑํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Fedora 17์—์„œ "gem install"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ Ruby ๊ฐœ๋ฐœ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์— ๋Œ€ํ•ด ๋งค์šฐ ๋งŒ์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ๊ณต์œ ํ•  ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

  • "gem install foo"๋Š” uid != 0์ธ ๊ฒฝ์šฐ "foo"๋ฅผ ~/somedir์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • "gem install foo"๋Š” uid == 0์ธ ๊ฒฝ์šฐ "foo"๋ฅผ /usr/local/somedir์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • "yum install rubygem-foo"๋Š” RPM ํŒจํ‚ค์ง€ "foo"๋ฅผ /usr/somedir์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๊ถŒํ•œ์— ๋”ฐ๋ผ install dir์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. "pip install foo"๋Š” ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ๊ณ ๋ คํ•œ๋‹ค๋ฉด ๊ทธ๋“ค์€ ์ž์‹ ์˜ ์ง‘์— "pip install"์„, ์‹œ์Šคํ…œ ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ์— "sudo pip install"์„ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์ด uid๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์‹œ์Šคํ…œ ์ „์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์„ค์น˜ํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํ•ญ์ƒ --target ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@bkabrda $PATH์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ ์‰ฝ๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ๋ฌด์—‡์„ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@dstufft ๊ฐ€ ์–ธ๊ธ‰ํ•œ @Ivoz , Fedora์—๋Š” ์ด๋ฏธ PATH์— $HOME/.local/bin์ด ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด).

Slavek์˜ ์ œ์•ˆ์€ POSIX ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋‚˜์—๊ฒŒ ์ข‹๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ํ•ญ๋ชฉ์ด ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์—์„œ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฒƒ์ด๋”๋ผ๋„ uid 0์ด๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปจํ…Œ์ด๋„ˆ์™€๋„ ์ž˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Windows์˜ ๊ฒฝ์šฐ ์ •๋‹ต์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋น„๋ก ๊ทธ๊ฒƒ์ด ์–ด๋Š ์ •๋„ ์กด์žฌํ•˜์ง€๋งŒ(pip install ๋Œ€ MSI ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ) ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์™€ ๋…ผ์Ÿ์„ ๋ฒŒ์ด๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉฐ Python 3.4์—์„œ๋„ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ ํƒ์  PATH์— ์ถ”๊ฐ€ ํ•ฉ๋ณ‘์ฆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •์€ ์‚ฌ์šฉ์ž๋ณ„ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ „์—ญ Scripts ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Windows๋Š” ๋˜ํ•œ Python์ด ๊ธฐ๋ณธ ์œ„์น˜(์ œ์–ด๋˜์ง€ ์•Š์Œ)์— ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ์•„๋‹ˆ๋ฉด ํ”„๋กœ๊ทธ๋žจ ํŒŒ์ผ(๋ณ€๊ฒฝํ•˜๋ ค๋ฉด UAC ๊ถŒํ•œ ์ƒ์Šน์ด ํ•„์š”ํ•จ)์— ์„ค์น˜๋˜์—ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

@rkuska ๊ฐ€ ์ œ์•ˆํ•œ "localprefix" ์•„์ด๋””์–ด๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ @bkabrda ๊ฐ€ ์ œ์•ˆํ•˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ •๋ง ๋งˆ์Œ์— ๋“ญ๋‹ˆ๋‹ค. ํŠนํžˆ python 3.x๋ฅผ ๊ธฐ๋ณธ python์œผ๋กœ ๋งŒ๋“œ๋Š” Arch์™€ ๊ฐ™์€ ๋ฐฐํฌํŒ์˜ ๊ฒฝ์šฐ ๋”์šฑ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๋” ์ฃผ์˜ํ•  ์ ์€ Arch๋Š” Debian๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 3.4.0 ๋ฆด๋ฆฌ์Šค์—์„œ surepip์„ ๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„ ์šฐ๋ฆฌ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ setuptools ๋ฐ pip๋ฅผ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ๋ฒˆ๋“ค ๋ฒ„์ „์€ ์˜ค๋ž˜๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Œ). ๊ทธ๊ฒƒ์— ๋Œ€ํ•œ ํŒ.

@lvoz
Arch์˜ ๊ฒฝ์šฐ $HOME ์•„๋ž˜์— PATH์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ถ”๊ฐ€ํ•˜๋„๋ก ์•Œ๋ ค์ฃผ๋Š” Ruby์šฉ ์œ„ํ‚ค ํ•ญ๋ชฉ ์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค Arch ๋ฐ Debian ๊ฐœ๋ฐœ์ž๊ฐ€ Slavek์ด ์‹œ์Šคํ…œ ๋ฒ„์ „์—์„œ ํœ ์„ ์žฌ๊ตฌ์„ฑํ•˜๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์„ค์น˜ํ•˜๋„๋ก Slavek์ด ํŒจ์น˜ ์ž‘์—…์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ Fedora์˜ Copr ๋นŒ๋“œ ์‹œ์Šคํ…œ์—์„œ Python 3.4 RPM ๋นŒ๋“œ๋ฅผ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ด์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋” ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ฝ”๋“œ ๋“ฑ์„ ์‚ดํŽด๋ณด๊ณ  debian-python ML์—์„œ Barry Warsaw [2]์™€์˜ ํ† ๋ก ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
(์šฐ๋ฆฌ ํŒจ์น˜๋ฅผ ์—…์ŠคํŠธ๋ฆผ์œผ๋กœ ์ œ์•ˆํ•˜๊ธฐ ์ „์— ์—ฌ์ „ํžˆ ์•ฝ๊ฐ„์˜ ์‚ฌ๋ž‘์ด ํ•„์š”ํ•˜์ง€๋งŒ ๋‹ค์šด์ŠคํŠธ๋ฆผ ATM์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.)

[1] http://copr-fe.cloud.fedoraproject.org/coprs/bkabrda/python-3.4/
[2] https://lists.debian.org/debian-python/2014/03/msg00046.html

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. AFAIK Arch๋Š” ๊ฒฐ์ฝ” ํœ ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์šฐ๋ฆฌ๋Š” surepip์ด ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

surepip์˜ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž์—๊ฒŒsurepip์„ ์‚ฌ์šฉํ•˜์—ฌ pip๋ฅผ ์„ค์น˜ํ•˜์ง€ ๋ง๋ผ๊ณ  ๊ฒฝ๊ณ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜surepip์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Fedora์˜surepip์€ ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€๋œ setuptools์™€ pip๊ฐ€ ํ•ญ์ƒ ์กด์žฌํ•˜๋„๋ก ์˜์กดํ•ฉ๋‹ˆ๋‹ค(์šฐ๋ฆฌ์˜ python3 ํŒจํ‚ค์ง€๋Š” ์˜์กด์„ฑ ๋ฃจํ”„๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด virtualenv๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋‹ค์‹œ ํฌ์žฅํ•ฉ๋‹ˆ๋‹ค system setuptools ๋ฐ pip๋ฅผ ๋ฐ”ํ€ด์— ๋„ฃ๊ณ  ์ƒˆ virtualenv์— ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
์šฐ๋ฆฌ๋Š” ์ฃผ์ œ์—์„œ ์•ฝ๊ฐ„ ๋ฒ—์–ด๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋…ผ์˜๋ฅผ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๊ณ„์†ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

@felixonmars ์ด๋Š” Arch venv์—์„œ Debian๊ณผ ๋™์ผํ•˜๊ฒŒ ์†์ƒ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ค๋ช… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๋ฅผ ์–ป์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ณ  ์ด์— ๋Œ€ํ•ด debian-python์—์„œ ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@dstufft ์˜ˆ, ๋ฒˆ๋“ค ๋ฒ„์ „์ด ์‹œ์Šคํ…œ ๋ฒ„์ „ ๋Œ€์‹  ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@bkabrda ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ Python์œผ๋กœ pip๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์ด ๊ฒฝ์šฐ virtualenv/venv๋ฅผ ํŠน์ˆ˜ ์ผ€์ด์Šค๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์„ธ์ƒ์˜ ๋์ด ์•„๋‹˜). ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋˜ํ•œ ๋ชจ๋“  Python์ด ์‹œ์Šคํ…œ Python์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์‚ฌ์šฉ์ž๊ฐ€ https://github.com/yyuu/pyenv (์ด๊ฒƒ์ด ์‹ค์ œ๋กœ Python์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•œ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ž˜์„œ ๊ถŒํ•œ ํ™•์ธ์„ ์ƒ๊ฐํ•˜๊ฒŒ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@dstufft ๊ฐ€ ๋งํ•œ ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ pyenv ์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ํŒŒ์ด์ฌ์„ ์ €๊ธ€๋งํ•  ๋•Œ root ๊ฐ€ ์ „์—ญ ์„ค์น˜(์—ฌ๊ธฐ์„œ "global" != "์‹œ์Šคํ…œ")

Fedora 17์—์„œ "gem install"์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜๋„๋ผ 17์šฉ gem์˜ rpm์ด ์ด๊ฒƒ์„ ๋ฐฐํฌํŒ ํ•ดํ‚น์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด gem ์ž์ฒด์— ์ด ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐ์€ pip๊ฐ€ pip๋ฅผ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐฐํฌํŒ์—์„œ ์ผค ์ˆ˜ ์žˆ๋Š” "์‹œ์Šคํ…œ ์นœํ™”์  ๋ชจ๋“œ"๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ pip๋ฅผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ํŒŒ์ด์ฌ์— ์„ค์น˜ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ๋•Œ ์ผœ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด pip๋Š” ์ผ๋ฐ˜์ ์ธ ์ „์—ญ ๊ธฐ๋ณธ ๋…ผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์•„ @felixonmars ๋ฐฉ๊ธˆ https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=packages/python , ๋‹น์‹ ์ดํ•˜๊ณ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ด --without-ensurepip ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. . ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด venv ๋ชจ๋“ˆ์— ๋Œ€ํ•ด surepip ๋ชจ๋“ˆ์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Ubuntu(Debian?)๊ฐ€ ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒจ์น˜๋Š” ์‹ค์ œ๋กœsurepip ํŒจํ‚ค์ง€ ์ž์ฒด์—์„œ rm -rf ๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ venv ๋‚ด์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ 2๋…„ ์ „์— Nick์ด ์ œ์•ˆํ–ˆ๊ฑฐ๋‚˜ ๋” ์˜ค๋ž˜ ์ „์— ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ œ์•ˆํ–ˆ์ง€๋งŒ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฐฉํ–ฅ์œผ๋กœ ์ง„ํ–‰๋˜์–ด ์„ฑ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ์žฅ์• ๋ฌผ์€ IIRC ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด์—ˆ์ง€๋งŒ ์š”์ฆ˜์—๋Š” sysadmins์™€ pip ์‚ฌ์šฉ์ž๊ฐ€ virtualenv/pip/setuptools ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•ด ์ข‹๋“  ๋‚˜์˜๋“  ์ฃผ์˜ํ•˜๋Š” ๋ฐ ๋” ์ต์ˆ™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ† ๋ก ์ด distutils-sig ๋˜๋Š” pypa-dev์—์„œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๊ธฐ์–ต๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์นดํƒˆ๋กœ๊ทธ ์„œ๋ช…: https://mail.python.org/pipermail/catalog-sig/2013-February/004773.html

@dstufft ์•„, ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ์ ์œผ๋กœ ์„ค์น˜๋œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๋™์•ˆ ๋ฒˆ๋“ค(์•„๋งˆ๋„ ์ด์ „) ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. :)

@felixonmars ์Œ , ๋ฌธ์ œ๋Š” ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€๋ฅผ virtualenv afaik์— ์„ค์น˜ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :) (๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋Šฅํ•˜๋”๋ผ๋„ ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€์™€ virtualenv ๋‚ด๋ถ€์—์„œ ์›ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ)

@dstufft ๊ทธ๊ฒƒ์ด Slavek์˜ rewheel์ด ์‹œ์ž‘๋˜๋Š” ๊ณณ์ด์ง€๋งŒ ์•ฝ๊ฐ„ ์ฃผ์ œ์—์„œ ๋ฒ—์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค. :)

์˜ˆ, https://lists.fedoraproject.org/pipermail/python-devel/2014-March/000583.html ์˜ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค :(

@dstufft ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์—ฌ๊ธฐ์„œ ํ† ๋ก ์„ ๊ณ„์†ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” Arch์—์„œ pip๋ฅผ ํ’€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๊ณ  rewheel์€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํœ ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

@dstufft ์šฐ๋ฆฌ๊ฐ€ ์•„๋งˆ๋„ virtualenv ๋ฐ ์•„๋งˆ๋„ pyenv๋ฅผ ํŠน์ˆ˜ ์ผ€์ด์Šค๋กœ ์ง€์ •ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋Š” ๋ง์ด ์˜ณ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด๊ธฐ ํ‰ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. pyenv์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ง€๊ธˆ ๋‹น์žฅ์€ ์ด์— ๋Œ€ํ•œ "์ ์ ˆํ•œ" ์†”๋ฃจ์…˜์ด ์ƒ๊ฐ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ณ  ์ƒ๊ฐํ•ด๋ณผ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

Fedora์˜ "gem install"์— ๋Œ€ํ•œ @qwcode ๋Š” ๋‹ค์šด์ŠคํŠธ๋ฆผ ํŒจ์น˜์ž…๋‹ˆ๋‹ค. TBH Fedora์˜ Rubygems๋ฅผ ์˜ค๋žซ๋™์•ˆ ๋งŒ์ง€์ง€ ์•Š์•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ–ˆ์„ ๋•Œ ๋‹ค์šด์ŠคํŠธ๋ฆผ์—๋งŒ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ python [1]์˜ ๊ด€๋ จ ๋ฒ„๊ทธ์— ๊ฒŒ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ† ๋ก ์„ python core๋กœ ์ด๋™ํ•˜์—ฌ pip ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ easy_install ๋ฐ python setup.py install ๋กœ์ปฌ ์„ค์น˜๋ฅผ ์œ„ํ•œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์œ„์น˜๋ฅผ ๊ฐ€์ง€๋ ค๋ฉด pip๊ฐ€ ( ์˜ˆ) uid==0 ์ธ ๊ฒฝ์šฐ sys.localprefix dir ๋ฐ @bkabrda๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ uid!=0 ์ธ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž dir์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

๋‹น๋ถ„๊ฐ„์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž dir์— pip๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

[1] http://bugs.python.org/issue1298835

Nick์ด ์ง€์ ํ–ˆ๋“ฏ์ด ๋‚˜๋Š” ํ† ๋ก ์„ issue1298835์—์„œ pypa-dev [1]๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.
[1] https://groups.google.com/forum/#!topic/pypa -dev/r6qsAmJl9t0

๊ธฐ๋ณธ๊ฐ’์€ --user

์ข‹์€ ์ƒ๊ฐ!

pip install foo ๋Š” ํŒŒ์ผ ๊ถŒํ•œ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‚ฌ๋žŒ๋“ค์€ ๋Œ€์‹  ์‹œ์Šคํ…œ Python์— ์ „์—ญ์ ์œผ๋กœ ์„ค์น˜๋˜๋Š” sudo pip install foo ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋ณด๋‹ค ๋” ๋‚˜์˜๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค(์˜ˆ: ๋Œ€ํ•™ ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ ์‚ฌ์šฉ์ž)์€ sudo ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ pip๊ฐ€ ์‹คํŒจํ•˜๋ฉด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋„๋ก ์š”์ฒญํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ๋ชจ๋‘์—๊ฒŒ ๋Š๋ฆฌ๊ณ  ์ง€๋ฃจํ•ฉ๋‹ˆ๋‹ค.
  2. ํฌ๊ธฐํ•˜๊ณ  ํŒจํ‚ค์ง€ ์—†์ด ํ•˜์‹ญ์‹œ์˜ค.

ํŠนํžˆ ๊ฒฝํ—˜์ด ๋งŽ๊ฑฐ๋‚˜ ์ •๋ณด๊ฐ€ ํ’๋ถ€ํ•œ ๊ฒฝ์šฐ์—๋งŒ pip install --user ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

'--user ๊ธฐ๋ณธ๊ฐ’'์— ๋Œ€ํ•ด ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ฒŒ ๋œ๋‹ค๋ฉด ๋œ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ๋Œ€์•ˆ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. --user๋กœ ๋Œ€์ฒด(๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„ค์น˜๊ฐ€ ์‹คํŒจํ•œ ๊ฒฝ์šฐ)
  2. (๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„ค์น˜๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ) ์‚ฌ์šฉ์ž์—๊ฒŒ (์นœํ•œ ํฐ ๊ธ€์ž๋กœ) --user๋ฅผ ์‹œ๋„ํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‹ค์ œ๋กœ ํ•œ๋™์•ˆ ๋ชจ๋“  ์„ค์น˜์—์„œ --user ๋ฅผ ์‚ฌ์šฉํ•ด ์™”์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์€ ์ด ์˜ต์…˜์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์„ ์žŠ์„ ๋•Œ๋งˆ๋‹ค ๊ถŒํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด ์งœ์ฆ๋‚œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์„ค์น˜๊ฐ€ conda์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค(conda/conda#448).

3.5๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ Program Files(์ˆ˜์ •ํ•˜๋ ค๋ฉด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ํ•„์š”ํ•จ)์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด Windows์—์„œ ํ›จ์”ฌ ๋” ์ž์ฃผ Windows์—์„œ ์ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋˜์‚ด๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

"๊ถŒํ•œ ์˜ค๋ฅ˜ ์‹œ --user๋กœ ๋Œ€์ฒด" ์˜ต์…˜์ด ๊ฐ€์žฅ ์ข‹์œผ๋ฉฐ ์ œ๊ฑฐ ์‹œ "--user๋กœ ๊ธฐ๋ณธ ์„ค์ • ๋ฐ ์‹œ์Šคํ…œ์œผ๋กœ ๋Œ€์ฒด" ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ณ  --system ๋˜๋Š” --system-only ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ฐฑ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด. ์˜๋„์ ์œผ๋กœ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ pip๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ์‹œ์Šคํ…œ์„ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉฐ ํ˜„์žฌ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์—๋Š” ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ชฉํ‘œ๋Š” ์ •๋ณด๊ฐ€ ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์˜ค๋ฅ˜ ์—†์ด pip install spam; python -c "import spam" ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( --user ๋กœ ๋‹ค์‹œ ์‹œ๋„ํ•  ๋•Œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Œ).

๋‚˜๋Š” ์ตœ๊ทผ์— ํŠนํžˆ #2403๊ณผ #2401์ด ์ตœ๊ทผ์— ์—ด๋ ธ๊ธฐ ๋•Œ๋ฌธ์— sudo pip install ์˜ ์‚ฌ์šฉ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ฒŒ ํ–ˆ๊ณ  ์ด๊ฒƒ์ด ๊ถŒํ•œ ๋ฌธ์ œ ์™ธ์— ์‹œ์Šคํ…œ์„ ์ž์ฃผ ์ค‘๋‹จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ฒŒ ๋งŒ๋“  ์ดํ›„๋กœ ์ตœ๊ทผ์— ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๋” ๋‚˜์€ ์ตœ์ข… ๋ชฉํ‘œ๊ฐ€ --user ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹ˆ๊ณ  ๋งˆ๋ฒ•์˜ ๊ถŒํ•œ ๊ฒ€์‚ฌ๊ฐ€ ์—†๊ณ  --global , --system ์™€ ๊ฐ™์€ ์ƒˆ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” --no-user ๋Š” ์ด์ „ ๋™์ž‘์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„ค์น˜ ๋ฐฉ๋ฒ•/์œ„์น˜์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ๋™์ž‘์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ž, ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๊ณ  ์‹ถ์€ ๊ธธ์ด๋ผ๊ณ  ๊ฒฐ์ •ํ•œ๋‹ค๋ฉด, ์˜ค๋Š˜๋‚  ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ณณ์—์„œ ์–ด๋–ป๊ฒŒ ๊ทธ ์ง€์ ์— ๋„๋‹ฌํ•  ๊ฒƒ์ธ๊ฐ€์˜ ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ช…ํžˆ ์–ด๋–ค ์‹œ์ ์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ ์ „ํ™˜ํ•˜๋“  ์ƒ๋‹นํžˆ ํฐ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜๋ฏ€๋กœ ์ƒ๋‹นํžˆ ๊ธด ๋ฆฌ๋“œ ํƒ€์ž„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ --user --global ์™€ ๊ฐ™์€ ์ƒˆ ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ํ•˜๋‚˜ ๋˜๋Š” ๋‹ค๋ฅธ ์˜ต์…˜์€ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•œ ๊ถŒํ•œ ํ™•์ธ ๋งˆ๋ฒ•์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋งˆ๋ฒ•์ด --global ๋™์ž‘์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋ฉด ๋งค์šฐ ํฐ ๋น„์ถ”์ฒœ ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฐœํ‘œํ•œ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ฒฝ๊ณ ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์˜ค๋ž˜ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋™์ž‘์˜ ์ƒ๋‹นํžˆ ํฐ ๋ณ€ํ™”๊ฐ€ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งค์ง ํด๋ฐฑ์„ ๋„๊ณ  ๋ฏธ๋ž˜ ๋™์ž‘์„ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ๋žŒ๋“ค์ด ์˜ค๋Š˜ ๊ทธ ๋™์ž‘์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์˜ต์…˜๋„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์งˆ๋ฌธ์€ ์„ค์น˜ํ•˜๋ ค๋Š” Python์— ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Œ์„ ๊ฐ์ง€ํ•œ ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ˆœํžˆ --user ๊ฐ€ ์˜ค๋ฅ˜์ด๊ณ  ํ•ด๋‹น Python์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์„ --global ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ž๋™์œผ๋กœ ๋ฏฟ๋Š” virtualenv/venv๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋ฉฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์™„์ „ํžˆ ์ปดํŒŒ์ผ๋œ Python์„ ์‚ฌ์šฉํ•˜์—ฌ "๋” ๋ฌด๊ฑฐ์šด" ๊ฐ€์ค‘์น˜ ๊ฒฉ๋ฆฌ ํ™˜๊ฒฝ์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ site.py ๋ฅผ ํŒจ์น˜ํ•˜์—ฌ ENABLE_USER_SITE ๋ฅผ False ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1, ๋‚˜๋Š” --system์— ํˆฌํ‘œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ์ข‹์•„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. Ubuntu ๊ธฐ๋ณธ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

https://launchpad.net/ubuntu/+source/python-pip/1.5.6-4ubuntu1

2015๋…„ 2์›” 9์ผ ์˜คํ›„ 4์‹œ 41๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๋” ๋‚˜์€ ์ตœ์ข… ๋ชฉํ‘œ๋Š” --user ๊ฐ€
๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆ๋ฒ•์˜ ๊ถŒํ•œ ๊ฒ€์‚ฌ๊ฐ€ ์—†์œผ๋ฉฐ --global ์™€ ๊ฐ™์€ ์ƒˆ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
--system ๋˜๋Š” --no-user ์ด์ „ ๋™์ž‘์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ์ด
์ƒ๊ด€์—†์ด ๊ฐ™์€ ํ–‰๋™์„ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ/์–ด๋””์— ๋ฌผ๊ฑด์ด ์„ค์น˜๋˜๋Š”์ง€.

--system ๋Š” ์‹ค์ œ๋กœ ์ผ๋ถ€ Python์—๋งŒ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • Windows์˜ ํŒŒ์ด์ฌ
  • pyenv ์„ค์น˜๋œ Python
  • Conda๊ฐ€ ์„ค์น˜๋œ Python
  • Nix ์„ค์น˜๋œ Python
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ปดํŒŒ์ผ๋œ Python.

์ด๊ฒƒ์€ _only_ Python์ด ์‹œ์Šคํ…œ์—์„œ ๋ฐฐ์†ก๋˜๋Š” *nix ์‹œ์Šคํ…œ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” --global ๊ฐ€ ๊ทธ ๊นƒ๋ฐœ์— ๋Œ€ํ•ด ํ›จ์”ฌ ๋” ๋‚˜์€ ์ด๋ฆ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  FML, ์™œ Debian/Ubuntu๋Š” ์˜ˆ์ƒ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๊นจ๋Š” ๋ฌด์ž‘์œ„ ํŒจ์น˜๋ฅผ ์ง€์†์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

๋”ฐ๋ผ์„œ Ubuntu ํŒจ์น˜๊ฐ€ ๋˜๋Œ๋ ค์ง€๋ฉด ์—ฌ๊ธฐ์„œ ์ˆ˜์ •๋˜๋Š” ์ผ์ •์€ ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ์ผ์ฃผ์ผ/ํ•œ ๋‹ฌ/3๊ฐœ์›”/6๊ฐœ์›”/๋…„...?

๊ณ ์ •์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์ž ์‹œ ๋™์•ˆ 2๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์ด ์žˆ๋Š” ์•„์ด๋””์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด(์—ฌ์ „ํžˆ ๋‹ค๋ฅธ pip ๊ฐœ๋ฐœ์ž์˜ ์Šน์ธ์ด ํ•„์š”ํ•จ) ๋‹ค์Œ์ด ์ ์šฉ๋˜๋Š” ์ „ํ™˜ ๊ณ„ํš์„ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • --user ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” _ํ•ญ์ƒ_ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • --global (๋˜๋Š” ๋ฌด์—‡์ด๋“ )์ด ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” _ํ•ญ์ƒ_ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘˜ ๋‹ค ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    • ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๊ทธ๋ ‡๋‹ค๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    • ์œ ํšจ ์‚ฌ์šฉ์ž์—๊ฒŒ sys.path ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š”์ง€, --user ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋‹ค๋ฅธ ๋ชจ๋“  ํƒ์ง€ ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•˜๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๊ณ  ๋ฏธ๋ž˜์˜ ์–ด๋Š ์‹œ์ ์—์„œ ์ด๊ฒƒ์˜ ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜๊ณ  ๋Œ€์‹  --user ์— ์„ค์น˜๋œ๋‹ค๋Š” ๋น„์ถ”์ฒœ ๊ฒฝ๊ณ ๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‹œ์Šคํ…œ Python์— sudo pip install foo ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€๋Š” ์•Š์ง€๋งŒ, ์–ด๋Š ์‹œ์ ์—์„œ ์ด๊ฒƒ์ด --user ๋ฅผ ์˜๋ฏธํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋ช…์‹œ์ ์œผ๋กœ --global ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ผ๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

  • --user ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” _ํ•ญ์ƒ_ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • --global (๋˜๋Š” ๋ฌด์—‡์ด๋“ )์ด ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” _ํ•ญ์ƒ_ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘ ์˜ต์…˜ ๋ชจ๋‘ ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    • ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ์œผ๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งˆ์ง€๋ง‰์œผ๋กœ --user ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ฒซ ๋ฒˆ์งธ ๋™์ž‘์—์„œ ๋‘ ๋ฒˆ์งธ ๋™์ž‘์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ์ƒ๋‹นํžˆ ๊ธด ํƒ€์ž„๋ผ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด(์˜ˆ: ์†Œ๊ธˆ, ์š”๋ฆฌ์‚ฌ, ๊ผญ๋‘๊ฐ์‹œ) ๋˜๋Š” ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ(์˜ˆ: ์ „ ์„ธ๊ณ„ ์ˆ˜์ฒœ ๊ฐœ์˜ ํ”„๋กœ์ ํŠธ์— ๊ตฌ์›Œ์ง„ ๋งž์ถคํ˜• Fabric ์Šคํฌ๋ฆฝํŠธ)์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ •๋ง ์ค‘์š”ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. sudo pip install <foo> ๋Š” ๊ธ€๋กœ๋ฒŒ Python์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ๊ฒฝ๊ณ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ธด ์‹œ๊ฐ„์„ ์ฃผ์–ด์•ผ ํ•˜๋ฉฐ ์‹ค์ œ๋กœ ํ•ด๋‹น ๋™์ž‘์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ช…์‹œ์ ์ธ --global ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•˜๋„๋ก ์†Œํ”„ํŠธ์›จ์–ด์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” Donald์˜ ์ œ์•ˆ์ด ์ข‹์€ ๊ณ„ํš์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, pip ํŒ€์ด ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค๋ฉด CPython์— 3.5 ๋ฆด๋ฆฌ์Šค ์ฐจ๋‹จ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์—ฌ Windows์˜ ๊ฒฝ๋กœ์— ์ „์—ญ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ์ž๋ณ„ ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜. 3.5์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ Program Files์— ์„ค์น˜ํ•˜๋Š” ์Šค์œ„์น˜์™€ ํ•จ๊ป˜ ์ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์—†์ด ์„ค์น˜ํ•˜๋Š” ์›ํ•˜๋Š” ๋™์ž‘์ด ๊ณ„์† "๊ทธ๋ƒฅ ์ž‘๋™"ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

pip ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ†ตํ•ด ๊ธฐ๋ณธ ์„ค์น˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ธฐ๋ณธ ์„ค์ •์ด ์•„์ง ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์˜ ์‹œ์Šคํ…œ์—์„œ "๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋ณ„"์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ: "default-install=user" ๋Œ€ "default-install=global")

@dstufft : ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์šฐ๋ถ„ํˆฌ ๋ฒ„๊ทธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์ œ์•ˆ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์„ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ ํฌ์—์„œ ํ•ด๋‹น ๋™์ž‘์„ ์–ป์œผ๋ฉด ํ˜„์žฌ ์šฐ๋ถ„ํˆฌ ํŒจ์น˜๋ฅผ ๋ฐฑํฌํŠธํ•˜๊ณ  ๋ฌผ๋ก  ์ด๊ฒƒ์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ๊ณ„์† ์•Œ๋ ค์ฃผ์„ธ์š”.

@dstufft ์˜ ๊ณ„ํš์— +1์ž…๋‹ˆ๋‹ค. ๋ช…์‹œ๋œ ์ด์œ ๋กœ --global ๋ฅผ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ์ถฉ๋ถ„ํžˆ ์˜ค๋žซ๋™์•ˆ ์šธํƒ€๋ฆฌ์— ์•‰์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ž.

Python 3.5๊ฐ€ Windows์˜ PATH์— ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” @ncoghlan ์˜ ์ œ์•ˆ์— ๋Œ€ํ•ด O'n ๋ฐ +1์ž…๋‹ˆ๋‹ค. ์ด ์ „ํ™˜์„ ์œ„ํ•ด ๋” ์ด์ƒ ๊ฑธ๋ฆผ๋Œ์ด ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ์‹œ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ @dstufft ์˜ ๊ณ„ํš์— ๋Œ€ํ•ด +1 ์ด๊ณ  --global ์— ๋Œ€ํ•ด +1 ์ด์ง€๋งŒ sudo pip install foo ์— --global $ ๊ฐ€ ํ•„์š”ํ•œ์ง€ ์—ฌ์ „ํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๋ฃจํŠธ๊ฐ€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์งˆ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ํ•ด์ œํ•˜๋„๋ก ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ ๋ฃจํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ( sudo pip install foo ๋ฅผ ์ง€๊ธˆ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด)

ํ˜„์žฌ ์ƒํƒœ์—์„œ ๋ฃจํŠธ์— --user ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋ณธ ์ ์ด ์—†์ง€๋งŒ ์‹ค์ œ๋กœ ๊ทธ๋Ÿฌํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ผ์–ด๋‚œ ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐ์€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์„ค์น˜๋œ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Python์—์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

Python 2.7 ๋ฐ 3.4(Python 3.4์˜ ๊ธฐ๋ณธ Python)์—์„œ pip install pytest --user ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด py.test ๋ช…๋ น์ด ์‹คํ–‰๋˜๋Š” ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚˜๋Š” ๋‘ ๊ฐœ์˜ ์„ค์น˜๊ฐ€ ์„œ๋กœ๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋˜์–ด "๋งˆ์ง€๋ง‰ ํ•˜๋‚˜๊ฐ€ ์ด๊ธฐ๋Š”" ์ƒํ™ฉ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์˜์‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ข‹์ง€ _์•Š์Šต๋‹ˆ๋‹ค_. ๋˜ํ•œ "๋งˆ์ง€๋ง‰์ด ์Šน๋ฆฌ"์ด๊ณ  3.4 ๋ฒ„์ „ ์ดํ›„์— 2.7 ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ 3.4๋ฅผ ๋‹ค์‹œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ œ๊ฑฐ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๋‹ค์Œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค(ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์Œ, ๊ธฐ๋ณธ ๋žฉํ†ฑ์ด ์†์ƒ๋˜๋Š” ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๊นจ๋—ํ•œ ์ปดํ“จํ„ฐ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—).

    C:\Apps\Python34\python.exe -m pip install pytest --user
    C:\Apps\Python27\python.exe -m pip install pytest --user
    C:\Apps\Python34\python.exe -m pip uninstall -y pytest

์ฒซ์งธ, ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์ด ๊ธฐ์กด ํŒŒ์ผ์„ ๋ฎ์–ด์“ด๋‹ค๋Š” ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋Ÿด๊นŒ์š”? ํ•˜๋“  ํ•˜์ง€ ์•Š๋“  ๋‚ด๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์— ๋Œ€ํ•œ ์„ ํƒ๊ถŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‘˜์งธ, py.test.exe RECORD ํŒŒ์ผ์˜ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐ๊ฐ€ ์‹คํŒจํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์‹คํŒจํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ์ œ๊ฑฐํ•ฉ๋‹ˆ๊นŒ? ์‹คํŒจํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚ด Python 2.7 pytest ๋ณต์‚ฌ๋ณธ์ด ์†์ƒ๋ฉ๋‹ˆ๊นŒ(exe ์‚ญ์ œ)?

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ (์ง€๊ธˆ์€!) ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ PATH์˜ ์‹œ์Šคํ…œ ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์•ž์ด๋‚˜ ๋’ค์— ๊ฐ€๊ฒ ์Šต๋‹ˆ๊นŒ? IMO, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ "๊ธฐ๋ณธ Python"์ด ๋˜๋„๋ก ์š”์ฒญํ•˜์ง€ _์•Š์€_ Python์— ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ฉด "๊ธฐ๋ณธ" Python์˜ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜๋œ ๋™์ผํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— IMO๊ฐ€ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ , ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ณ€๊ฒฝ์„ ํ•˜๊ธฐ ์ „์— ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

๊ณต์œ  Windows ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„ ์ถฉ๋Œ์€ ๊ณต์œ  bin ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š” POSIX ์‹œ์Šคํ…œ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค. Python 3์€ ์„ค์น˜๋œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ๊ทœ์ •๋˜์ง€ ์•Š์€ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์„ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทœ์ •๋˜์ง€ ์•Š์€ ์ด๋ฆ„์€ Python 2 ๋ฒ„์ „์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์„ค์น˜ ๋˜๋Š” ์‚ฌ์šฉ์ž๋ณ„ ์„ค์น˜๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ์„ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ ๋’ค์— ๋‘์‹ญ์‹œ์˜ค.

"Python 3์€ ์„ค์น˜๋œ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„์„ ์„ค์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค." - ์•„๋งˆ๋„ pip ๋ฐ setuptools(Python 3์—์„œ)๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์„ค์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ? ๊ทธ ๋„๊ตฌ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ž…๋‹ˆ๊นŒ?

์•„, ๊ทธ๋ฆฌ๊ณ  ํ—. ๋‚ด ๊ทผ์œก ๋ฉ”๋ชจ๋ฆฌ๋Š” ๊ธฐ๋ณธ Python(3.4)์— ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด "pip install foo"๋ฅผ ์ž…๋ ฅํ•˜๋„๋ก 100% ํ›ˆ๋ จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ›ˆ๋ จํ•˜๋Š” ๊ฒƒ์€ ์ง€์˜ฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Windows ์‚ฌ์šฉ์ž๋Š” ์‹œ์Šคํ…œ Python์ด ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” Unix ์‚ฌ์šฉ์ž์™€ ๋‹ฌ๋ฆฌ "python"์ด Python 2 ๋˜๋Š” 3์„ ์˜๋ฏธํ•˜๋Š”์ง€("์ด๋ฅผ ๊ธฐ๋ณธ Python์œผ๋กœ ์„ค์ •" ๋ฐ "PATH์— ์ถ”๊ฐ€"๋ฅผ ํ†ตํ•ด) ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Python 3.5๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด "pip"(๋˜๋Š” ๋‹ค๋ฅธ ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ ์ด๋ฆ„)๊ฐ€ ํ•ด๋‹น ๋ฒ„์ „์„ ์ฐธ์กฐํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Windows์— Python 3.5๋งŒ ์„ค์น˜๋œ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ Python์— ์ด๋ฆ„์ด ํ•„์š”ํ•œ ๋ฐฉ์‹์— ๋Œ€ํ•œ Unix ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ด์ƒํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. (Unix ์ œ์•ฝ ์กฐ๊ฑด์— ๋Œ€ํ•œ ๋‚ด ์„ค๋ช…์ด ์ •ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.) ์—ฌ๋Ÿฌ Python ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•˜์ง€๋งŒ ํ•ด๋‹น ์†”๋ฃจ์…˜์€ ํ•˜๋‚˜์˜ ๋ฒ„์ „๋งŒ ํ•„์š”ํ•œ ๋Œ€๋‹ค์ˆ˜์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋Œ€๋‹ต์€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ๋””๋ ‰ํ† ๋ฆฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ฒ„์ „์ด ์ง€์ •๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„, ๊ทธ๋ฆฌ๊ณ  ์ด ๋…ผ์Ÿ์€ ์—ฌ๊ธฐ๋ณด๋‹ค๋Š” python-dev์— ๊ด€ํ•œ ๊ฒƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๊ด€ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ?

python-dev์—์„œ Windows ์‚ฌ์šฉ์ž๋ณ„ ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ PEP 370 ๋””์ž์ธ ํ† ๋ก ์„ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ํ•ฉ๋ฆฌ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Windows์˜ ์ „์—ญ ์Šคํฌ๋ฆฝํŠธ ์„ค์น˜๋Š” Python ๋ฒ„์ „์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋ณ„ ์Šคํฌ๋ฆฝํŠธ ์„ค์น˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๋Š” ๋‘ ์ˆ˜์ค€(์ „์—ญ ๋˜๋Š” ์‚ฌ์šฉ์ž๋ณ„)์—์„œ ์‹คํ–‰ ํŒŒ์ผ์— ๋Œ€ํ•ด ๊ณต์œ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” POSIX์˜ ์ƒํ™ฉ๊ณผ ๋Œ€์กฐ๋˜๋ฏ€๋กœ ๋Ÿฐํƒ€์ž„ ์‹œ ์ด๋ฆ„ ์„€๋„์ž‰์„ ํ†ตํ•ด์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ค์น˜ ์‹œ ์ด๋ฆ„ ์ถฉ๋Œ์ด ๋‚˜ํƒ€๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋” ํฝ๋‹ˆ๋‹ค.

๋ณ‘๋ ฌ ์„ค์น˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์†”๋ฃจ์…˜์€ "-m" ์Šค์œ„์น˜๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ„๋„์˜ ์Šคํฌ๋ฆฝํŠธ์˜ shebang ์ค„ ๋‚ด์šฉ์„ ์ถ”์ธกํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ํ•ญ์ƒ ํ˜ธ์ถœํ•˜๋Š” Python์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-m ๋ฅผ ์ดํ•ดํ–ˆ์ง€๋งŒ, ์ง€๋‚œ ์‹œ๊ฐ„์— ๋ฌธ์„œํ™” ๋ฐฉ๋ฒ•์˜ ๋งฅ๋ฝ์—์„œ ์ œ๊ธฐ๋œ ๊ฐ•๋ ฅํ•œ ์„ ํ˜ธ๋„๋Š” pip install foo ๋ฅผ ์„ค์น˜ํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ทจ๊ธ‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค( -m ๋ฐ ๋ฒ„์ „์ด ์ง€์ •๋œ ๋ช…๋ น์€ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ์˜ ์˜ˆ์™ธ๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

pip ๋งค๋‰ด์–ผ์€ ๋Œ€์•ˆ์กฐ์ฐจ _์–ธ๊ธ‰_ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Windows์—์„œ pip ์ž์ฒด๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด -m ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ์ œ์™ธ).

๋‚˜๋Š” pip ํ˜ธ์ถœ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด stdlib ํŒจํ‚ค์ง€ ๋ฌธ์„œ์—์„œ -m์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
๋ณ‘๋ ฌ Python ์„ค์น˜ ๋‹ค๋ฃจ๊ธฐ - ์ด๊ฒƒ์ด ์œ ์ผํ•œ ํ˜ธ์ถœ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.
๊ธ€๋กœ๋ฒŒ ์„ค์น˜, ์‚ฌ์šฉ์ž ์„ค์น˜ ๋ฐ ๊ฐ€์ƒ ์„ค์น˜๋ฅผ ์œ„ํ•ด ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
ํ™˜๊ฒฝ.

2015๋…„ 2์›” 9์ผ ์˜คํ›„ 7์‹œ 58๋ถ„์— ncoghlan์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

pip ๊ตฌ์„ฑ ํŒŒ์ผ์„ ํ†ตํ•ด ๊ธฐ๋ณธ ์„ค์น˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Œ
๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์ด "๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋ณ„"์„ ์„ ํƒํ•˜๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ
๊ธฐ๋ณธ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ž์ฒด ์‹œ์Šคํ…œ
์•„์ง. (์˜ˆ: "default-install=user" ๋Œ€ "default-install=global")

๋‚˜๋Š” ์ด๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š”
--user ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์—…์ŠคํŠธ๋ฆผ์˜ ๋ณด๋‹ค ๋ณด์ˆ˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹,
pip ์‹œ์Šคํ…œ์„ ์•ˆ์ „ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒฝ์Ÿ ๋ชฉํ‘œ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.
๋„๊ตฌ. ์˜ˆ

https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1419695
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=725848

๊ธฐ๋ณธ๊ฐ’์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์Šคํ…œ ์ „์ฒด ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
์ตœ์†Œํ•œ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ธฐ๊ณ„๋Š” ๋™์ผํ•  ๊ฒƒ์ด๊ณ  ๋ฐฐํฌํŒ์€ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ถ”ํ•œ ๋ธํƒ€๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ํ•ด์•ผ ํ•  ์ผ์€ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
config ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜์ง€๋งŒ ์ ์–ด๋„ ์„ค๋ช…ํ•˜๊ธฐ๋Š” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Debuntu๊ฐ€ ํ˜„์žฌ ์‚ฌ์ดํŠธ ์ „์ฒด์— pip.conf ํŒŒ์ผ์„ ์„ค์น˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‹ค์‹œ ํ™•์ธ).

https://pip.pypa.io/en/latest/user_guide.html#configuration

ํ•œ ๊ฐ€์ง€ ํ•ฉ๋ณ‘์ฆ: Python 2 ๋ฐ Python 3์— ๋Œ€ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ pip ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Python, ์˜ˆ: /etc/{xdg/pip/}/pip{2,3}.conf ๋˜๋Š” ์ผ๋ถ€.

2015๋…„ 2์›” 10์ผ ์˜ค์ „ 1์‹œ 24๋ถ„์— Paul Moore๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ผ์–ด๋‚œ ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐ์€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€
์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Python์ด ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

Debian/Ubuntu(๋ชจ๋“  *nixes?)์—์„œ๋Š” ์ถฉ๋Œ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ~/.local/lib/pythonX.Y/site-packages์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ~/.local/bin์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€ ์„ค์น˜
pip install --user foo ๋ฐ pip3 install --user foo ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ 'foo'๋Š”
๊ฒฐ๊ตญ ~/.local/bin/foo ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์˜ ํ•œ ๊ฐ€์ง€ ๋‹จ์ ์€ Fedora๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ~/.local/bin ๋ฅผ $PATH ์— ์ถ”๊ฐ€ํ•˜๋Š” ์œ ์ผํ•œ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋ฐฐํฌํŒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ์•ž์— ์˜ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ). ์ด์ƒ์ ์œผ๋กœ ๋‹ค์šด์ŠคํŠธ๋ฆผ์€ ~/.local/bin ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ $PATH ์— ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2015๋…„ 2์›” 10์ผ ์˜ค์ „ 7์‹œ 24๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€๊ฒฝ์˜ ํ•œ ๊ฐ€์ง€ ๋‹จ์ ์€ Fedora๊ฐ€ ์œ ์ผํ•œ ๋‹ค์šด์ŠคํŠธ๋ฆผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ~/.local/bin ๋ฅผ $PATH ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฐํฌํŒ
์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ์˜ค๋Š” ๊ฒƒ์ฒ˜๋Ÿผ /usr/bin ๋ฐ /usr/local/bin ์ „์—
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ์ „์—). ์ด์ƒ์ ์œผ๋กœ ๋‹ค์šด์ŠคํŠธ๋ฆผ์€
~/.local/bin ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ $PATH ์— ์žˆ๋„๋ก ์‹œ์Šคํ…œ.

๋„ค, ํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋˜๋Š” ์˜คํžˆ๋ ค ๋‹ค์šด์ŠคํŠธ๋ฆผ
๋ฐฐํฌํŒ์€ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

(๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž์ฒ˜๋Ÿผ /usr/bin ๋ฐ /usr/local/bin ์•ž์— ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋Š” ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ณด๋‹ค ๋จผ์ € ์˜ต๋‹ˆ๋‹ค)

ํ , @ncoghlan ์€ ๋ฐฉ๊ธˆ ๊ทธ ๋ฐ˜๋Œ€๋กœ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. (Windows์—์„œ๋Š” ํŠนํžˆ
์ปจํ…์ŠคํŠธ) ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” _์ดํ›„_ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š
์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ฒ„์ „์ด ์—†๋Š” ํ•œ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ
๋ฒ„์ „์ด ์ง€์ •๋˜์–ด ๋œ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„
Windows ์‚ฌ์šฉ์ž๋Š” ๋ฒ„์ „ ์—†๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ถฉ๋Œํ•˜๊ณ 
pip2/pip3์™€ ๊ฐ™์€ ๊ดด๋ฌผ, Unix ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฉ์‹ ;-)

์•„, ๊ทธ๋ฆฌ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ --user ์™€ ์ •ํ™•ํžˆ ๊ด€๋ จ์ด ์—†๋Š” ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Windows --global ์„ค์น˜๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ณณ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์€ ์šฐ๋ฆฌ๊ฐ€ ์ด ๋ฌธ์ œ์™€ ๋ณ„๋„๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” 2์ฐจ์  ๊ด€์‹ฌ์‚ฌ/๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ํ˜„์žฌ ์ƒ๊ฐ:

  • ์ œ๊ฐ€ ์ด์ „์— ํฌ์ŠคํŒ…ํ•œ ์ผ๋ฐ˜์ ์ธ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด ๋™์˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” --global ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • --user ์— ์„ค์น˜ํ•˜๊ณ  ~/.local/bin ๊ฐ€ $PATH ์— ์—†์œผ๋ฉด ์ผ์ข…์˜ ๊ฒฝ๊ณ ๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€์ฒด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  --global ๋˜๋Š” --user ๋กœ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ์ผ์ข…์˜ default-install ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • pip 6.0๋ถ€ํ„ฐ /etc/ ์— ๋จธ์‹ ๋ณ„ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ์ง€๋งŒ pip๋ฅผ ์‹คํ–‰ํ•˜๋Š” Python ๋ฒ„์ „์—๋งŒ ํ•ด๋‹น๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ค์†Œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์ข‹์€ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์—ด๋ ค ์žˆ๋Š” ํ•œ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ sudo pip install foo ๋ฅผ ํ•˜๊ฑฐ๋‚˜ site-packages ๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์žฅ๊ธฐ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๊นŒ?

๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜์žˆ๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. --global ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์žฅ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ์˜ต์…˜์ด๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ๋•Œ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŽ์€ ์‹œ์Šคํ…œ์—์„œ ์‹œ์Šคํ…œ ๊ณ ์žฅ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ์ „์—ญ Python์„ (์กฐ์šฉํžˆ) ์—‰๋ง์œผ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. --user ์— ์„ค์น˜ํ•˜๋ฉด ๊นจ์ง„ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(์ œ ์ƒ๊ฐ์—๋Š”?) ๋ฃจํŠธ ์‚ฌ์šฉ์ž๊ฐ€ /root/.local/ ์„ค์น˜๋ฅผ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š” ์‚ฌ๋žŒ์€ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  3. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ --user ๋˜๋Š” --global ์ˆ˜๋™์œผ๋กœ ์„ ํƒํ•˜๋„๋ก ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.
  4. ์ฒ˜์Œ ๋‘ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋˜ ๋ฐฐํฌํŒ์—์„œ /etc/ ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์œ„์น˜๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์„ธ ๋ฒˆ์งธ ์˜ต์…˜์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๋„ค ๋ฒˆ์งธ ์˜ต์…˜์ด ๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ํ”Œ๋žซํผ/์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์ดํ•ด๋˜๋Š” ์†”๋ฃจ์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋จผ์ € ๋‹ค๋ฅธ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ”Œ๋žซํผ ๊ฐ„ ์ผ๊ด€๋œ ํ–‰๋™์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

"๋‚˜๋Š” ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ Windows์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์ด Python 3.5 ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Conda๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ ๋˜๋Š” pyenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ธ ๋ฒˆ์งธ ์˜ต์…˜์€ ๋‚˜์œ ์˜ต์…˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž˜๋ชป๋œ ์ผ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ๋ถ€ํŒ…ํ•˜๊ธฐ์— ๋‹ค์†Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” 1๊ณผ 2 ์‚ฌ์ด์—์„œ ์‚ฌ๋žŒ๋“ค์ด (๊ฐœ๋…์ ์œผ๋กœ) sudo pip install --global foo ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋‚˜์œ ์Šต๊ด€์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Windows, Conda, pyenv ๋“ฑ์—์„œ๋Š” "์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ๋‚˜์œ ์Šต๊ด€์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋Œ€๋‹ต์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. *nix์—์„œ๋Š” "์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜์ง€๋งŒ "๋‚˜์œ" ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ์ž๋ฅผ ์ด๋Œ ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ผ์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋” ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋‚˜๋Š” ์ฒซ ๋ฒˆ์งธ ์„ ํƒ์ด ์šฐ๋ฆฌ์—๊ฒŒ ์˜ฌ๋ฐ”๋ฅธ ์„ ํƒ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝํ•  ๋™์ž‘์€ ์ „์—ญ ๋””๋ ‰ํ† ๋ฆฌ์— ์„ค์น˜ํ•  ๊ถŒํ•œ ์—†์ด pip install foo --user ์ž…๋ ฅํ•˜๋ฉด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ๊ฒฝ์šฐ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” pip์— ์˜์กดํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ์„œ์˜ pip install --user ๋Š” ๋ˆ„๊ตฌ๋‚˜ ๊ธฐ๋Œ€ํ•˜๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ ์‹ค์ œ๋กœ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋ฐœํŒ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์—…๋ฐ์ดํŠธ๋œ ์ œ์•ˆ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • --user ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • --global ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‘˜ ๋‹ค ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    1. ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ์œผ๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

    2. ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด --global ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    3. default-install ๋ฅผ ๋ณด๊ณ  ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ --user ๋˜๋Š” -global ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    4. ์œ ํšจ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š”์ง€, --user ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”์ง€ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

    5. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ํƒ์ง€ ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•˜๋ฉด --global ๊ฐ€ ํ†ต๊ณผ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‚ฌ์šฉ ์ค‘๋‹จ ๊ธฐ๊ฐ„์ด ์—†์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ --user ๋˜๋Š” --global ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์‹คํ–‰ ์ค‘์ธ Python์˜ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์„ ์˜ ์ถ”์ธก์„ ์‹œ๋„ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค. , ์œ ํšจ ์‚ฌ์šฉ์ž ๋ฐ ๊ตฌ์„ฑ๋œ ๊ธฐ๋ณธ ์„ค์น˜ ๋ฐฉ๋ฒ•.

(๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž์ฒ˜๋Ÿผ /usr/bin ๋ฐ /usr/local/bin ์•ž์— ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋Š” ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ณด๋‹ค ๋จผ์ € ์˜ต๋‹ˆ๋‹ค)

ํ , @ncoghlan ์€ ๋ฐฉ๊ธˆ ๊ทธ ๋ฐ˜๋Œ€๋กœ ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. (Windows์—์„œ๋Š” ํŠนํžˆ
์ปจํ…์ŠคํŠธ) ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” _์ดํ›„_ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Š
์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ฒ„์ „์ด ์—†๋Š” ํ•œ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ
๋ฒ„์ „์ด ์ง€์ •๋˜์–ด ๋œ ๊ฑฑ์ •๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์•„๋งˆ๋„
Windows ์‚ฌ์šฉ์ž๋Š” ๋ฒ„์ „ ์—†๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ถฉ๋Œํ•˜๊ณ 
pip2/pip3์™€ ๊ฐ™์€ ๊ดด๋ฌผ, Unix ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐฉ์‹ ;-)

๋Œ€๋ณธ ์ด๋ฆ„์ด ์ถฉ๋Œํ•œ๋‹ค๋Š” ์ธก๋ฉด์—์„œ ์ƒ๊ฐ์กฐ์ฐจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. $PATH ๋ณ€์ˆ˜๊ฐ€ sys.path ์™€ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ์ž˜๋ชป๋œ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ sys.path ์˜ ์ˆœ์„œ๋Š” stdlib > ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ > ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. some-script ์˜ ์ˆœ์„œ๊ฐ€ global bin dir > user bin dir ์ด๊ณ  python -m some-script ๊ฐ€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ > ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ผ๋ฉด ์ •๋ง ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(๋ฒ„์ „์ด ์žˆ๋Š” ๊ฒฝ์šฐ์™€ ์—†๋Š” ๊ฒฝ์šฐ) ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์–ด๋–ค ์ˆœ์„œ๋กœ ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋Š”์ง€๋Š” ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค sys.path ๋Š” ๋งค์šฐ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์ , ์šฐ๋ฆฌ๋Š” $PATH๊ฐ€ sys.path๋ฅผ ๋”ฐ๋ฅด๊ณ  (Windows ์šฉ์–ด๋กœ) C:PythonXYScripts๋ณด๋‹ค %APPDATA%PythonXYScripts ์ด์ „์— C:PythonXYScripts๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๊ถŒ์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. python-dev ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Donald์˜ ์ตœ์‹  ์ œ์•ˆ์€ ๋‚˜์—๊ฒŒ ์ข‹๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. "๊ทธ๋ž˜์„œ ๋” ์ƒ๊ฐํ•ด๋ณด๋ฉด..." ๋ฌธ๋‹จ์— ์ €๋„ 100% ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

Windows์—์„œ PATH๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ „์ฒด ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ์Šคํ…œ ์ „์ฒด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋งŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ™•์žฅ์„ ํฌํ•จํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์‚ฌ์šฉ์ž๋ณ„ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๊ฒฝ์šฐ --global ๊ฐ€ ์„ฑ๊ณตํ•˜๋ฏ€๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๋˜ํ•œ Windows์˜ ๊นจ์ง„ PATH ์ฒ˜๋ฆฌ๋กœ ์ธํ•ด ์‹œ์Šคํ…œ ์ „์ฒด ์„ค์ •์ด _ํ•ญ์ƒ_ ์‚ฌ์šฉ์ž๋ณ„ ์„ค์ •์„ ๋Šฅ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ pip.exe ๊ฐ€ ํ•ญ์ƒ ์ตœ์‹  ์‹œ์Šคํ…œ์ด๋‚˜ ์‚ฌ์šฉ์ž Python์ด ์•„๋‹Œ ์ตœ์‹  ์‹œ์Šคํ…œ ๋˜๋Š” ์‚ฌ์šฉ์ž Python์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ๋ฒ„์ „ ์—†๋Š” ์Šคํฌ๋ฆฝํŠธ์— py.exe ์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด (python-dev, IIRC์—์„œ) ๋ฐ˜์ฏค ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋ฅผ ์„ค์น˜ํ•˜๊ณ  (์˜ˆ) pip.exe -3.5 ๋Š” ํŠน์ • ๋ฒ„์ „ ์„ ํƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์š”์ฒญ ์‹œ PATH(๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ”๋กœ ๊ฐ€๊ธฐ)๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด Python ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐฐ์น˜ ํŒŒ์ผ ์„ค์น˜๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์€ activate-py35 ์ด๊ณ  PATH๋Š” 3.5์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. vcvarsall.bat ์ƒํ™ฉ์— ๋น ์ง€๊ณ  ์‹ถ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์— ๋Œ€ํ•ด ๋งค์šฐ ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋™์‹œ์— ํ˜„์žฌ ์„ค์น˜ ์œ„์น˜์— ๋Œ€ํ•ด ๊ฐ€์ •ํ•˜๊ฑฐ๋‚˜ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ด๋™ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์— ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ์ฐพ๊ธฐ ์œ„ํ•ด.

๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ”๋กœ ๊ฐ€๊ธฐ

๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ "Python 3.5(32๋น„ํŠธ) ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ" ๋ฐ”๋กœ ๊ฐ€๊ธฐ์ž…๋‹ˆ๋‹ค. Visual Studio ์‚ฌ์šฉ์ž๋Š” ๋ณ‘๋ ฌ์„ ์ธ์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” Windows์— ๋Œ€ํ•ด ๊ทธ ๋ชจ๋“  ์˜๋ฏธ๋ฅผ ์™„์ „ํžˆ ์ดํ•ดํ•  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์•Œ์ง€ ๋ชปํ•˜์ง€๋งŒ foo ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” pip install foo ๊ฐ€ ์ฆ‰์‹œ ์‹คํ–‰๋  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์œผ๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ๊ฝค ๊ธฐ๋ถ„์ด ๋‚˜์ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์ค„์—์„œ foo ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ --user ์— ์„ค์น˜ํ•˜๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฝ๋กœ์— ์—†๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๊ฝค ํฐ ํšŒ๊ท€์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

๋ฒ„์ „์ด ์ง€์ •๋˜์ง€ ์•Š์€ ์Šคํฌ๋ฆฝํŠธ์— py.exe ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์˜ค๋Š˜๋‚ ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ _ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉด_ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ด์— ๋Œ€ํ•ด +1์„ ํ•˜๊ธฐ ์ „์— ์˜๋ฏธ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Windows์—์„œ PATH๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์ „์ฒด ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ์‹œ์Šคํ…œ ์ „์ฒด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋งŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ™•์žฅ์„ ํฌํ•จํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค, ์‰ฟ. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์žŠ์—ˆ๋‹ค.

๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ”๋กœ ๊ฐ€๊ธฐ
๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ "Python 3.5(32๋น„ํŠธ) ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ" ๋ฐ”๋กœ ๊ฐ€๊ธฐ์ž…๋‹ˆ๋‹ค. Visual Studio ์‚ฌ์šฉ์ž๋Š” ๋ณ‘๋ ฌ์„ ์ธ์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

... ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ Powershell์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋”์ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์Šคํฌ๋ฆฝํŠธ foo๋ฅผ ์„ค์น˜ํ•˜๋Š” pip install foo๋ฅผ ๋ช…๋ น์ค„์—์„œ foo๋กœ ์ฆ‰์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์œผ๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ๊ฒƒ์€ ๊ฝค ๊ธฐ๋ถ„์ด ๋‚˜์ฉ๋‹ˆ๋‹ค.

๋™์˜. ์ด๊ฒƒ์€ ์ž˜๋ชป๋œ ํšŒ๊ท€์ด๋ฉฐ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค :-)

๋ฒ„์ „ ์—†๋Š” ์Šคํฌ๋ฆฝํŠธ์— py.exe๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

py.exe ์™€ ๋‹ค์†Œ ๊ด€๋ จ์ด ์žˆ๋Š” ์š”์ ์€ ํ˜„์žฌ์™€ ๊ฐ™์ด ํŠน์ • ํ•˜๋“œ ์ฝ”๋”ฉ๋œ Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  exe ๋ž˜ํผ๊ฐ€ "๋ฌด์—‡์„ ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค" ์–ด๋–ป๊ฒŒ๋“  (๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, py.exe ini ํŒŒ์ผ, Python %PATH%๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ, ...). ๊ทธ๋ž˜๋„ ๋ฒ„์ „์ด ์ง€์ •๋œ ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ(ํŒŒ์ผ์ด ์„œ๋กœ ๋ฎ์–ด์“ฐ์ด๊ฑฐ๋‚˜ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋กœ ์‹คํ–‰๋˜๋Š” ํŒŒ์ผ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด)๊ฐ€ ์—ฌ์ „ํžˆ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. %PATH%์˜ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๋„ฃ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

... ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ Powershell์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋”์ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์‹œ๋„ํ–ˆ๊ณ  ๋™์ผํ•˜๊ฒŒ ๋ณด์ด๊ณ  ๋™์ž‘ํ•˜๋Š” activate-py35.bat ๋ฐ activate-py35.ps1 ํŒŒ์ผ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ๋ชจ๋‘๊ฐ€ activate-py35 ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ฒฝ๋กœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋จ). ์—ฌ์ „ํžˆ ์ด์ƒ์ ์ด์ง€๋Š” ์•Š์ง€๋งŒ ์ตœ์•…์˜ ์ƒํ™ฉ์—์„œ ์ตœ์„ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ์—†๋Š” ์Šคํฌ๋ฆฝํŠธ์— py.exe๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

py.exe ์™€ ๋‹ค์†Œ ๊ด€๋ จ์ด ์žˆ๋Š” ์š”์ ์€ exe ๋ž˜ํผ๊ฐ€ ํ˜„์žฌ์™€ ๊ฐ™์ด ํŠน์ • ํ•˜๋“œ ์ฝ”๋”ฉ๋œ Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  "๋ฌด์—‡์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋™์ ์œผ๋กœ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ธฐ๋ณธ" ์–ด๋–ป๊ฒŒ๋“ 

"somehow"๋Š” py.exe ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Ÿฐ์ฒ˜๊ฐ€ ์ž์ฒด ์ด๋ฆ„์„ ํ™•์ธํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋œ ๊ฒฝ์šฐ python.exe ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋Œ€์‹  'scripts\\{}{}.{}.exe'.format(argv[0], major_version, minor_version) ( argv[0] ๋“ฑ์˜ ์ ์ ˆํ•œ ํ™•์žฅ์ž ํŠธ๋ฆฌ๋ฐ ํฌํ•จ)๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋ฒ„์ „์ด ์—†๋Š” ๋Ÿฐ์ฒ˜์— ๋Œ€ํ•ด ์™„์ „ํžˆ ๋ฒ„์ „์ด ์ง€์ •๋œ ๋Ÿฐ์ฒ˜์™€ ๋‹ค๋ฅธ ํŒŒ์ผ(์˜ค๋Š˜๋ถ€ํ„ฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ ํ•ด๋‹น ํŒŒ์ผ์€ ์ƒˆ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ผ๋ฐ˜ py.exe ์ž…๋‹ˆ๋‹ค. (์ด๊ฒƒ์€ pip-script.py ํŒŒ์ผ์˜ ์˜›๋‚ ์—๋Š” ํ›จ์”ฌ ๋” ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ๋“ค์ด ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค...)

๊ทธ๋Ÿฌ๋‚˜ ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด PATH๋Š” ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์ด ์—†์œผ๋ฉฐ ๋‚˜์œ ํ•ด๊ฒฐ์ฑ…๋„ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ์‹ค์ œ๋กœ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹ˆ๋ผ ๊ด€๋ฆฌ์ž ๋˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .exe ๋ฐ .py ํŒŒ์ผ์ด ๊ฒฐํ•ฉ๋œ ๋ชจ๋“  ๊ฒƒ์ด ๊ท ํ˜•์ด๋ฉฐ ๋‹จ์ผ .exe ํŒŒ์ผ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” pip install foo && foo ์— ๋Œ€ํ•œ ์ตœ๊ณ ์˜ ์ด์•ผ๊ธฐ๋ฅผ ์–ป๋Š” ๊ฒƒ์ด ๊ทธ ํŠน์ •ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฏ€๋กœ .exe ์™€ .py ๋ฅผ ๋‹ค์‹œ ๋ถ„๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ๊ฒƒ์ด ์ข‹์€ ๋‹ต๋ณ€์„ ์œ„ํ•œ ์ข‹์€ ์ ˆ์ถฉ์•ˆ.

.exe / .py ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค :)

์ €๋Š” ์‹ค์ œ๋กœ activate-py35 ์•„์ด๋””์–ด๋ฅผ ์ค€๋น„ ์ค‘์ž…๋‹ˆ๋‹ค. ์ €๋Š” PATH์— Python์„ ์ถ”๊ฐ€ํ•˜๋Š” ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ํŒฌ์ด ์•„๋‹ˆ์—ˆ๊ณ  py -m pip ๋ช…๋ น์€ ์‹ค์ œ๋กœ ์ฃผ๋ชฉ์„ ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด Sphinx์—์„œ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). activate-py ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ž‘์„ฑํ•˜๊ณ  python-dev์— ๊ฒŒ์‹œํ•˜์—ฌ ๊ฒฌ์ธ๋ ฅ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด activate-whatever ํŒŒ์ผ์€ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด๋ถ€์˜ ํŒŒ์ผ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๊นŒ? $PATH ์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ์‹ค์ œ Python์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š”?

์˜ˆ, ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. python-dev์—์„œ ์ €๋Š” -x.y ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ py.exe ์— ์ „๋‹ฌํ•˜๊ณ  sysconfig ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ. ๋‚˜๋Š” Windows ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด Windows ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ ˆ๋Œ€์ ์œผ๋กœ ๋”์ฐํ•˜๊ฒŒ ๋“ค๋ฆฌ์ง€ ์•Š์ง€๋งŒ(์–ด์ฉŒ๋ฉด?) Windows ์ง€์‹์ด ์ €๋ฅผ ๋ฐ๋ ค๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ •๋„์ž…๋‹ˆ๋‹ค.

2015๋…„ 2์›” 10์ผ ์˜ค์ „ 8์‹œ 2๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•„, ๊ทธ๋ฆฌ๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
์ •ํ™•ํžˆ --user ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ฌธ์ œ๋Š” ์–ด๋””์—๋‚˜ ์กด์žฌํ•œ๋‹ค
Windows --global ์„ค์น˜ ์ œ์™ธ. ๋‚˜๋Š” ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ด
์ด ๋ฌธ์ œ์™€ ๋ณ„๋„๋กœ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” 2์ฐจ ๋ฌธ์ œ/๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋™์˜.

์šฐ๋ฆฌ๋Š” --global ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

--user ์— ์„ค์น˜ํ•˜๊ณ 
~/.local/bin ๊ฐ€ $PATH ์— ์—†์Šต๋‹ˆ๋‹ค.

+1, ์•„๋งˆ๋„ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” ๊ตฌ์„ฑ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๊ธฐ๋ณธ์ ์œผ๋กœ default-install ์˜ต์…˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
๋Œ€์ฒด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  --global ๋˜๋Š”
--user .

+1

pip 6.0 ํ˜„์žฌ /etc/ ์— ์‹œ์Šคํ…œ๋ณ„ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๋“ค์€ ์‹คํ–‰ ์ค‘์ธ Python ๋ฒ„์ „์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์”จ. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ค์†Œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€๋งŒ ์ข‹์€ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ 
์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ๋„ ์†์„ ๋Œˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒ€์ƒ‰ ์ˆœ์„œ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • pipX.Y.conf
  • pipX.conf
  • pip.conf

/etc/xdg/pip ๋‹ค์Œ์— /etc์— ๋ฃจํŠธ(?)๋ฅผ ๋‘ก๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ XY๋Š” ๋ฌผ๋ก 
major.minor ๋ฒ„์ „ ๋ฒˆํ˜ธ. ๋จผ์ € ์ฐพ์€ ์‚ฌ๋žŒ์ด ์ด๊น๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ํ•˜๋‚˜์˜ ์ค‘์š”ํ•œ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์„ ๋ด…๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ sudo pip install foo ๋˜๋Š” ์˜คํžˆ๋ ค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
site-packages ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

"site-packages" ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,
Debian/Ubuntu์—์„œ๋Š” sudo pip install ๊ฐ€ _ever_ ์„ค์น˜๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
/usr/lib, ๊ทธ๋Ÿฌ๋‚˜ /usr/local/lib๋งŒ. ๊ทธ๋ฆฌ๊ณ  ์žŠ์ง€ ๋งˆ์„ธ์š”. ์—ฌ๊ธฐ์— dist ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค($reasons ๋•Œ๋ฌธ์— ~/.local ์ œ์™ธ).

์ด๊ฒƒ์€ ๋•Œ๋•Œ๋กœ (๋‚˜์กฐ์ฐจ๋„) ์žŠํ˜€์ง€๋Š” ์ •๋ง ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.
Donald๋Š” ์‚ฌ์ดํŠธ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์™€
๊ณต๊ธ‰์—…์ฒด ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ. ๋ฐ๋น„์•ˆ์—์„œ site-local์€
/usr/lib/pythonX.Y/dist-packages ๋ฐ pip ๋ช…๋ น์ด ์ด๋ฅผ ๊ฑด๋“œ๋ ค์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด ๊ณต๊ธ‰์—…์ฒด ๋กœ์ปฌ์€ /usr/local/lib/pythonX.Y/dist-packages์ด๊ณ 
์ผ๋ถ€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ pip install์„ ์œ„ํ•œ ๋ฌธ์„œํ™”๋˜๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€
๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ.

๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์ œ์•ˆํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์ด๋ฏธ ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฒฝ๋กœ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
์ด๋ฅผ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด

  • ์ „์—ญ_์„ค์น˜_๋””๋ ‰ํ† ๋ฆฌ
  • global_install_as_sudo(์ฐธ/๊ฑฐ์ง“)
  1. --global ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์žฅ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ๋•Œ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€
    ๋งŽ์€ ๊ฒฝ์šฐ์— ๊ธ€๋กœ๋ฒŒ Python์„ (์กฐ์šฉํžˆ) ์—‰๋ง์œผ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ์‹œ์Šคํ…œ์€ ๊ณ ์žฅ๋‚œ ์‹œ์Šคํ…œ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ์„ฑ์œผ๋กœ ์ด๊ฒƒ์€ Debian๊ณผ ์™„์ „ํžˆ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.
๋ฐ๋น„์•ˆ ์Šˆํผ์œ ์ €๋Š” sudo pip install ๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.
/usr/local/lib/pythonX.Y/dist-packages. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ "๋ง์นœ๋‹ค"๋ผ๊ณ  ๋งํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ"์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
/usr/lib/pythonX.Y/dist-packages), ์ •์˜๋˜๊ณ  ๋ฌธ์„œํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. --user ์— ์„ค์น˜ํ•˜๋ฉด ๊ณ ์žฅ๋‚œ ์‹œ์Šคํ…œ์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ ์ƒ๊ฐ์—๋Š”?)
    ํ•˜์ง€๋งŒ ๋ฃจํŠธ ์‚ฌ์šฉ์ž๊ฐ€
    /root/.local/ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์ผ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

  1. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ --user ๋˜๋Š”
    --global ์ˆ˜๋™์œผ๋กœ.

๋‚˜๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ์œ„์˜ ๊ตฌ์„ฑ ์Šค์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  1. ์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋˜ ๋ฐฐํฌํŒ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์œ„์น˜๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.
    /etc/ ์„ ์ž…๋ ฅํ•˜๋ฉด ์„ธ ๋ฒˆ์งธ ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

์ด๋ด, ์ •๋ง ์ข‹์€ ์„ ํƒ์ด์•ผ!

๋„ค ๋ฒˆ์งธ ์˜ต์…˜์ด ๊ฐ€์žฅ ์ข‹์€ ์˜ต์…˜์ผ ์ˆ˜ ์žˆ์ง€๋งŒ
์–ด๋–ค ์ข…๋ฅ˜์˜ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋จผ์ € ๋‹ค๋ฅธ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.
๋ชจ๋“  ํ”Œ๋žซํผ/์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ณ  ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ํ”Œ๋žซํผ ๊ฐ„ ์ผ๊ด€๋œ ํ–‰๋™์„ ์„ ํ˜ธํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”Œ๋žซํผ ์ •์˜ ๋™์ž‘์„ ํ•ด๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด pip๊ฐ€
--dry-run ์˜ต์…˜์€ ์ตœ์†Œํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์ •ํ™•ํžˆ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
ํ•  ์ผ๊ณผ ์žฅ์†Œ.

์„ธ ๋ฒˆ์งธ ์˜ต์…˜์ด ๋‚˜์œ ์˜ต์…˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ถŒํ•œ"์€ Windows์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ „์— ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Python 3.5, Conda๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ ๋˜๋Š” pyenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ. ์˜ค๋ฅ˜ ๋ฐœ์ƒ
์ด ๋ชจ๋“  ๊ฒฝ์šฐ์— ํ•˜๋Š” ๊ฒƒ์ด ์ž˜๋ชป๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ๋‹ค์†Œ ์‚ฌ์šฉ์ž์ž…๋‹ˆ๋‹ค.
๋ถ€ํŒ…์— ๋น„์šฐํ˜ธ์ ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์„ฑ์ด --global install์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐ๋น„์•ˆ์ด ๊ทธ๊ฒƒ์„ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋„ ์•Š๋Š”๋‹ค(์•„๋งˆ๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€
๋‹ค๋ฅธ ์˜๊ฒฌ์ด์ง€๋งŒ ์ ์–ด๋„ ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์„ ํƒ๊ถŒ์„ ์ค๋‹ˆ๋‹ค).

๊ทธ๋ž˜์„œ ๋‚˜๋Š” 1๊ณผ 2 ์‚ฌ์ด์—์„œ ์—ฐ์Šต์ด ์–ผ๋งˆ๋‚˜ ๋‚˜์œ์ง€์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด (๊ฐœ๋…์ ์œผ๋กœ) sudo pip install --global foo ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ๋น„์•ˆ์—์„œ๋Š” /usr/local/lib๋กœ ์ด๋™ํ•˜๋Š” ํ•œ ์˜ˆ์ƒ๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.
/usr/lib๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

(์ด ๋ชจ๋“  ๊ฒƒ์€ ์™ธ๋ถ€ ํ™˜๊ฒฝ BTW๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.)

  • --user ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

+1

  • --global ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ํ•ญ์ƒ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€.

๊ธ€๋กœ๋ฒŒ _vendor_ ํŒจํ‚ค์ง€ == +1, ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ == -1.

  • ๋‘˜ ๋‹ค ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    1. ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ์œผ๋ฉด ๋งˆ์น˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

      --global ๊ฐ€ ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

+1, ๋น„๋ก venv ๋‚ด๋ถ€์˜ ์ด ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์ด
/lib/pythonX.Y/์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€

  1. ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    --global ์ด(๊ฐ€) ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ , ์ด๊ฑด ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. default-install ๋ฅผ ๋ณด๊ณ  ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ --user ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜
    -global ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

+1

  1. ์œ ํšจ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์—ญ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์—†๋Š”์ง€ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
    ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ๋ฐ --user ๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ.

+1

  1. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ํƒ์ง€ ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•˜๋ฉด --global ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค.
    ํ†ต๊ณผ๋˜์—ˆ๋‹ค.

๋˜ํ•œ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์‚ฌ์šฉ ์ค‘๋‹จ ๊ธฐ๊ฐ„์ด ์—†์Œ์„ ์˜๋ฏธํ•˜๋ฉฐ ์˜ˆ์ƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
--user ๋˜๋Š” --global ๋ถ€์žฌ
์šฐ๋ฆฌ๊ฐ€ ์‹คํ–‰ ์ค‘์ธ Python์˜ ๊ธฐ๋Šฅ, ํšจ๊ณผ์ ์ธ ์‚ฌ์šฉ์ž ๋ฐ
๊ตฌ์„ฑ๋œ ๊ธฐ๋ณธ ์„ค์น˜ ๋ฐฉ๋ฒ•.

ํ•ฉ๋ฆฌ์ ์ธ ๋ชฉํ‘œ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด, "๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€"์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ์ €๋Š” ์ฃผ๋กœ "distutils๊ฐ€ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์„ค์น˜ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Python ์ž์ฒด์—๋Š” "๊ณต๊ธ‰์—…์ฒด ๋กœ์ปฌ" ๋Œ€ "์‚ฌ์ดํŠธ ๋กœ์ปฌ" ๊ตฌ๋ถ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— Python์„ ํŒจ์น˜ํ•˜์ง€ ์•Š๋Š” ๋‹ค์šด์ŠคํŠธ๋ฆผ์—์„œ ๋™์ผํ•œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ๋น„์•ˆ์—์„œ๋Š” ์‹ค์ œ๋กœ dist-packages ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ  "global"์€ ์‹ค์ œ๋กœ "site local"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. pip๊ฐ€ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ํ•ด์•ผ ํ•  ์ผ์€ ์•„๋‹ˆ์ง€๋งŒ Debuntu์˜ Python ํŒจ์น˜์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฆ‰, Debuntu๊ฐ€ ํ•ด๋‹น ๊ตฌ๋ถ„์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด distutils๋ฅผ ํŒจ์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— pip๋Š” ์ด๋ฏธ Debuntu์˜ /usr/local/../dist-packages/ ์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ผ์ข…์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  pip๊ฐ€ /usr/../dist-packages/ ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ์œ ์ผํ•œ ๊ฒฝ์šฐ๋Š” pip๊ฐ€ ๊ฑฐ๊ธฐ์—์„œ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(pip๋Š” ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํŠน๋ณ„ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ์‚ฌ๋ฌผ๋กœ ๋ด…๋‹ˆ๋‹ค. sys.path ). ๋ฐ๋น„์•ˆ์€ ์ œ๊ฑฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด pip๋ฅผ ํŒจ์น˜ํ–ˆ์œผ๋ฉฐ ์ด์— ๋Œ€ํ•œ ์‹ค์ œ ์ง€์›์€ Python ์—…์ŠคํŠธ๋ฆผ์—์„œ "๊ณต๊ธ‰์—…์ฒด ๋กœ์ปฌ" ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์‹ค์ œ ์ง€์›์„ ์–ป๋Š” ๋ฐ ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

--user์— ์„ค์น˜ํ•˜๊ณ  ~/.local/bin์ด $PATH์— ์—†์œผ๋ฉด ์ผ์ข…์˜ ๊ฒฝ๊ณ ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ๊ณ ๋Š” ์–ผ๋งˆ๋‚˜ ์ทจ์•ฝํ•œ๊ฐ€์š”? ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ๋ฐ”๋€Œ๋‚˜์š”? ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? Windows์—์„œ ๋ฐ/๋˜๋Š” ๋™๋“ฑํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๊นŒ? ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋Š” ์–ด์จŒ๋“  ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋“๋ณด๋‹ค ์‹ค์ด ๋” ๋งŽ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

--user ์— ์„ค์น˜ํ•˜๊ณ 
~/.local/bin ๊ฐ€ $PATH ์— ์—†์Šต๋‹ˆ๋‹ค.

+1, ์•„๋งˆ๋„ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” ๊ตฌ์„ฑ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์‚ฌ๋žŒ๋“ค์ด ์กฐ์šฉํžˆ ํ•  ์ˆ˜ ์žˆ๋„๋ก Python ๊ฒฝ๊ณ ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด์žฅ๋œ Python ๊ฒฝ๊ณ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์นจ๋ฌตํ•  ํ•„์š”๋ฅผ ๋Š๋‚€๋‹ค๋ฉด
๋ชจ๋‘.

pip 6.0 ํ˜„์žฌ /etc/ ์— ์‹œ์Šคํ…œ๋ณ„ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๋“ค์€ ์‹คํ–‰ ์ค‘์ธ Python ๋ฒ„์ „์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์”จ. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹ค์†Œ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์ง€๋งŒ ์ข‹์€ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ 
์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ๋„ ์†์„ ๋Œˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒ€์ƒ‰ ์ˆœ์„œ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  • pipX.Y.conf
  • pipX.conf
  • pip.conf

/etc/xdg/pip ๋‹ค์Œ์— /etc์— ๋ฃจํŠธ(?)๋ฅผ ๋‘ก๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ XY๋Š” ๋ฌผ๋ก 
major.minor ๋ฒ„์ „ ๋ฒˆํ˜ธ. ๋จผ์ € ์ฐพ์€ ์‚ฌ๋žŒ์ด ์ด๊น๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์ด ์ด๊ฒƒ๊ณผ ์ ‘์„ ์ ์œผ๋กœ๋งŒ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋ฏฟ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ #2417๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
๋…ผ์˜.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ํ•˜๋‚˜์˜ ์ค‘์š”ํ•œ ๋ฏธํ•ด๊ฒฐ ์งˆ๋ฌธ์„ ๋ด…๋‹ˆ๋‹ค. ์žฅ๊ธฐ์ ์œผ๋กœ
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ sudo pip install foo ๋˜๋Š” ์˜คํžˆ๋ ค ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
site-packages ๋””๋ ‰ํ† ๋ฆฌ์— ์“ฐ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

"site-packages" ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,
Debian/Ubuntu์—์„œ๋Š” sudo pip install ๊ฐ€ _ever_ ์„ค์น˜๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
/usr/lib, ๊ทธ๋Ÿฌ๋‚˜ /usr/local/lib๋งŒ. ๊ทธ๋ฆฌ๊ณ  ์žŠ์ง€ ๋งˆ์„ธ์š”. ์—ฌ๊ธฐ์— dist ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค($reasons ๋•Œ๋ฌธ์— ~/.local ์ œ์™ธ).

์ด๊ฒƒ์€ ๋•Œ๋•Œ๋กœ (๋‚˜์กฐ์ฐจ๋„) ์žŠํ˜€์ง€๋Š” ์ •๋ง ์ค‘์š”ํ•œ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.
Donald๋Š” ์‚ฌ์ดํŠธ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์™€
๊ณต๊ธ‰์—…์ฒด ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ. ๋ฐ๋น„์•ˆ์—์„œ site-local์€
/usr/lib/pythonX.Y/dist-packages ๋ฐ pip ๋ช…๋ น์ด ์ด๋ฅผ ๊ฑด๋“œ๋ ค์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด ๊ณต๊ธ‰์—…์ฒด ๋กœ์ปฌ์€ /usr/local/lib/pythonX.Y/dist-packages์ด๊ณ 
์ผ๋ถ€ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ pip install์„ ์œ„ํ•œ ๋ฌธ์„œํ™”๋˜๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€
๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ.

๊ทธ๋ž˜์„œ ์ œ๊ฐ€ ์ œ์•ˆํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์ด๋ฏธ ๊ตฌ์„ฑ ํŒŒ์ผ ๊ฒฝ๋กœ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
์ด๋ฅผ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด

  • ์ „์—ญ_์„ค์น˜_๋””๋ ‰ํ† ๋ฆฌ
  • global_install_as_sudo(์ฐธ/๊ฑฐ์ง“)

pip๋Š” ์‹ค์ œ๋กœ ์ด๊ฒƒ์„ ์ œ์–ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋‚ด ๋ง์€, ๋ถ„๋ช…ํžˆ ๋†’์€ ์ˆ˜์ค€์—์„œ๋Š”
ํŒŒ์ผ์„ ์ด๋™ํ•˜๋Š” ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์—) distutils/sysconfig์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋‚˜๋Š” pip๊ฐ€ ์•„๋งˆ๋„ ๊ณต๊ธ‰ ์—…์ฒด-๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฑด๋“œ๋ ค์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
--vendor ์™€ ๊ฐ™์€ ์ผ์ข…์˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ œ๊ณต๋˜์–ด ๋ฒค๋”๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋นŒ๋“œ ์ฒด์ธ์—์„œ pip. ์ด ๊ฐœ๋…์€ ์‹ค์ œ๋กœ debuntu ์™ธ๋ถ€์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ง€๊ธˆ ๋‹น์žฅ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์˜ ํŒจ์น˜๊ฐ€ ์ด๋ฏธ ์ด๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๊ฒƒ์ด ์ตœ๊ณ ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋งํ•  ๋•Œ
"๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€" Debubuntu์—์„œ /usr/local/.../dist-packages ๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค.
Python์ด Debuntu๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋Š ์‹œ์ ์—์„œ "site-local" ํŒจํ‚ค์ง€
์‹œ์Šคํ…œ ์—…์ŠคํŠธ๋ฆผ.

  1. --global ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์žฅ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.
    ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•  ๋•Œ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€
    ๋งŽ์€ ๊ฒฝ์šฐ์— ๊ธ€๋กœ๋ฒŒ Python์„ (์กฐ์šฉํžˆ) ์—‰๋ง์œผ๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    ์‹œ์Šคํ…œ์€ ๊ณ ์žฅ๋‚œ ์‹œ์Šคํ…œ์„ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ์„ฑ์œผ๋กœ ์ด๊ฒƒ์€ Debian๊ณผ ์™„์ „ํžˆ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.
๋ฐ๋น„์•ˆ ์Šˆํผ์œ ์ €๋Š” sudo pip install ๊ฐ€ ๋“ค์–ด๊ฐˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.
/usr/local/lib/pythonX.Y/dist-packages. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ "๋ง์นœ๋‹ค"๋ผ๊ณ  ๋งํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ"์€ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—
์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
/usr/lib/pythonX.Y/dist-packages), ์ •์˜๋˜๊ณ  ๋ฌธ์„œํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, "์‹œ์Šคํ…œ ์—‰๋ง"์€ ๋„ˆ๋ฌด ๊ฐ€ํ˜นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๋‚ด ๋ง์€
sudo pip install foo ๋Š” ์‹œ์Šคํ…œ์ด foo ์— ์˜์กดํ•˜๊ณ  ์žˆ๊ณ 
ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฒ„์ „์˜ ์‚ฌ๋ฌผ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์„ฑ๋ฆฝ
๊ธฐ๋ณธ์ ์œผ๋กœ `/usr/local``์— ์„ค์น˜ํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ ์— ๋Œ€ํ•ด true์ž…๋‹ˆ๋‹ค.

  • --global ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ํ•ญ์ƒ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€.

๊ธ€๋กœ๋ฒŒ _vendor_ ํŒจํ‚ค์ง€ == +1, ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ == -1.

์ด๊ฑด ๋ฐ˜๋Œ€๋กœ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

  • ๋‘˜ ๋‹ค ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํด๋ฐฑ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

    1. ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ์œผ๋ฉด ๋งˆ์น˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

      --global ์ด(๊ฐ€) ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

+1, ๋น„๋ก venv ๋‚ด๋ถ€์˜ ์ด ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์ด
/lib/pythonX.Y/์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€

์˜ˆ, ๋‹ค์‹œ ์šฐ๋ฆฌ๋Š” ํŒŒ์ด์ฌ์—๊ฒŒ ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ๋ฌป์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
๋”ฐ๋ผ์„œ "ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š” ์œ„์น˜"๋Š” venv/virtualenv์ž…๋‹ˆ๋‹ค.

  1. ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    --global ์ด(๊ฐ€) ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ , ์ด๊ฑด ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ๊ฑฐ๊ธฐ์— ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
๋น„ํ™œ์„ฑํ™”๊ฐ€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ _is_ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Š” ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ํƒ์ง€ ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•˜๋ฉด --global ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค.
    ํ†ต๊ณผ๋˜์—ˆ๋‹ค.

๋˜ํ•œ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค.

--user ํ”Œ๋ž˜๊ทธ์™€ ๊ฐ™์ด --user๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ๋˜๋Š”
๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด
--global ํ”Œ๋ž˜๊ทธ ์—†์ด sudo pip install foo ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ผํ•˜๊ณ ์žˆ๋Š”. ์ด๊ฒƒ์€ ๋˜ํ•œ ์ด๊ฒƒ์ด ๊นจ์ง€์ง€ ์•Š๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ทœ์น™์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
sudo pip install foo ๊ฐ€ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š” ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

--user์— ์„ค์น˜ํ•˜๊ณ  ~/.local/bin์ด $PATH์— ์—†์œผ๋ฉด ์ผ์ข…์˜ ๊ฒฝ๊ณ ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ๊ณ ๋Š” ์–ผ๋งˆ๋‚˜ ์ทจ์•ฝํ•œ๊ฐ€์š”? ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ๋ฐ”๋€Œ๋‚˜์š”? ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? Windows์—์„œ ๋ฐ/๋˜๋Š” ๋™๋“ฑํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๊นŒ? ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋Š” ์–ด์จŒ๋“  ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋“๋ณด๋‹ค ์‹ค์ด ๋” ๋งŽ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

def user_bin_on_path():
    paths = os.environ.get("PATH").split(":")
    for path in paths:
        if os.path.realpath(path) == os.path.realpath(USER_BIN_DIR):
            return True
    return False

๊ทธ๋Ÿฐ ๊ฒƒ์€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ, ๊ฒฝ๋กœ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ ๋“ฑ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์•…๋งˆ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ ๊ฐ„ ์ฝ”๋„ˆ ์‚ฌ๋ก€๋ฅผ ๋‹ค๋ฃฐ๋งŒํผ ์ •ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ๋ฌด์˜๋ฏธํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•  ๋•Œ๋งŒ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” --user๊ฐ€ ์•”์‹œ์ ์ธ pip install [--user] foo ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ foo ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์— ๋Œ€ํ•œ ์ง€์นจ ์—†์ด "๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ"์„ ์–ป๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์ด์œ . ์ตœ์†Œํ•œ ๊ฒฝ๊ณ ๋Š” PATH์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋˜ํ•œ Windows ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์šฉ์ž ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ PATH์— ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋„๋ก(๋˜๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰) ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” Steve๊ฐ€ ์ง€์ ํ•œ activate ์Šคํฌ๋ฆฝํŠธ์˜ ํ•„์š”์„ฑ์„ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์‹œ์Šคํ…œ ๊ฐ’์ด ์‚ฌ์šฉ์ž ๊ฐ’๋ณด๋‹ค ์šฐ์„ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ PATH ๋ฐ sys.path์˜ ์ˆœ์„œ๊ฐ€ ์—ฌ์ „ํžˆ ๋ฐ˜๋Œ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„. realpath ์ด ๊ฒฝ๋กœ๋ฅผ ์ •๊ทœํ™”ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ๋ฌผ๋ก  ์ถฉ๋ถ„ํžˆ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋ฅผ ๊ดด๋กญํžˆ๋Š” ๊ฒƒ์€ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹ค์ˆ˜๋กœ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ _if_ ์‚ฌ์šฉ์ž๋Š” pip์˜ ์‹ค์ˆ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ํ”ผํ•  ๋ฐฉ๋ฒ•์ด ์—†๋Š” ์„ฑ๊ฐ€์‹œ๊ณ  ์ž˜๋ชป๋œ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ œ์•ˆํ•˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๊ฐ•๋ ฅํ•˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ๋ฌธ์ œ๋Š” ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ๋“œ๋ฌผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๊ด‘๋ฒ”์œ„ํ•œ ํ•ฉ์˜๊ฐ€ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ํŒจ์น˜๋ฅผ ์–ป๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ€์„œ ์˜ค๋Š˜ ๋ฐค์ด๋‚˜ ๋‚ด์ผ ๋Šฆ๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์–ป์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

2015๋…„ 2์›” 10์ผ ์˜คํ›„ 12์‹œ 14๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” --user๊ฐ€ ์•”์‹œ์ ์ธ pip install [--user] foo ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ foo ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ 
๋ช…๋ น์ด ์—†๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์ง€์นจ ์—†์ด "๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ"์„ ์–ป์Šต๋‹ˆ๋‹ค.
์„ค๋ฆฝํ•˜๋‹ค.

Debian ๋ฐ ์•„๋งˆ๋„ ๋‹ค๋ฅธ Linux์—๋Š” ์‹ค์ œ๋กœ command-not-found ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜๋ฉด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

% ์ž‰ํฌ์Šค์ผ€์ดํ”„
'inkscape' ํ”„๋กœ๊ทธ๋žจ์ด ํ˜„์žฌ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
sudo apt-get ์ž‰ํฌ์Šค์ผ€์ดํ”„ ์„ค์น˜

์–ด์ฉŒ๋ฉด ์šฐ๋ฆฌ๋Š” ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2015๋…„ 2์›” 10์ผ ์˜คํ›„ 12์‹œ 6๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

  • --global ๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด ํ•ญ์ƒ ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒจํ‚ค์ง€.

๊ธ€๋กœ๋ฒŒ _vendor_ ํŒจํ‚ค์ง€ == +1, ๊ธ€๋กœ๋ฒŒ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ == -1.

์ด๊ฑด ๋ฐ˜๋Œ€๋กœ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”?

๋‚ด ์šฉ์–ด๊ฐ€ ํ˜ผ๋™๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

/usr/local/lib/pythonX.Y/dist-packages == +1
/usr/lib/pythonX.Y/dist-packages == -1

๊ทธ๋Ÿฌ๋‚˜ ์ด์ „์— ๋งํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ pip์ด ์ •๋ง๋กœ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
distutils์—์„œ ์ƒ์†๋˜๊ณ  Debuntu์˜ distutils๊ฐ€ ํŒจ์น˜๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—
์˜ณ์€ ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•ด.

  1. ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
    --global ์ด(๊ฐ€) ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ , ์ด๊ฑด ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์œผ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๊ฐ€ ๊ฑฐ๊ธฐ์— ์„ค์น˜ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
๋น„ํ™œ์„ฑํ™”๊ฐ€ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ _is_ ์—†์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Š” ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์˜ค, ๋ฌด์Šจ ๋ง์ธ์ง€ ์ด์ œ ์•Œ๊ฒ ์–ด์š”. ๊ทธ๊ฒŒ ๋ง์ด ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”. ๋‚ด ๊ฑฑ์ •์€ ๊ทธ๊ฒƒ์ด
pip๊ฐ€ ์‹ค์ œ๋กœ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด ๋” ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ,
pip๊ฐ€ ๋ถ„๋ช…ํžˆ _tell_ํ•  ์ˆ˜ ์žˆ๋„๋ก --dry-run ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ํƒ์ง€ ๋ฐฉ๋ฒ•์ด ์‹คํŒจํ•˜๋ฉด --global ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค.
    ํ†ต๊ณผ๋˜์—ˆ๋‹ค.

๋˜ํ•œ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค.

--user ํ”Œ๋ž˜๊ทธ์™€ ๊ฐ™์ด --user๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ๋˜๋Š”
๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†์œผ๋ฉด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด
--global ํ”Œ๋ž˜๊ทธ ์—†์ด sudo pip install foo ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ผํ•˜๊ณ ์žˆ๋Š”. ์ด๊ฒƒ์€ ๋˜ํ•œ ์ด๊ฒƒ์ด ๊นจ์ง€์ง€ ์•Š๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ทœ์น™์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
sudo pip install foo ๊ฐ€ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š” ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฐธ์กฐ. ์šฐ๋ฆฌ๊ฐ€ ํ”ผํ•˜๊ณ  ์‹ถ์€ ์ฃผ์š” ์‚ฌ์šฉ ๊ธˆ์ง€ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

normal_user$ pip ์„ค์น˜ foo
์ด๋ด ๋‹น์‹ ์€ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค
normal_user$ sudo pip install foo
์ด๋ด ๋‹น์‹ ์€ ๋ฐฉ๊ธˆ ์‹œ์Šคํ…œ์„ BOOKED

"๋””๋ ‰ํ† ๋ฆฌ์— ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ --user" ๊ทœ์น™์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์•„, ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , devubtu๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฝ๋กœ์— ์‚ฌ์šฉ์ž ๋กœ์ปฌ bin์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•  ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

2015๋…„ 2์›” 10์ผ ์˜คํ›„ 4์‹œ 5๋ถ„์— Barry Warsaw [email protected] ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

2015๋…„ 2์›” 10์ผ ์˜คํ›„ 12์‹œ 14๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” --user๊ฐ€ ์•”์‹œ์ ์ธ pip install [--user] foo ์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ foo ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ 
๋ช…๋ น์ด ์—†๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์ง€์นจ ์—†์ด "๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ"์„ ์–ป์Šต๋‹ˆ๋‹ค.
์„ค๋ฆฝํ•˜๋‹ค.

Debian ๋ฐ ์•„๋งˆ๋„ ๋‹ค๋ฅธ Linux์—๋Š” ์‹ค์ œ๋กœ command-not-found ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ ๋ช…๋ น์„ ํ˜ธ์ถœํ•˜๋ฉด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

% ์ž‰ํฌ์Šค์ผ€์ดํ”„
'inkscape' ํ”„๋กœ๊ทธ๋žจ์ด ํ˜„์žฌ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
sudo apt-get ์ž‰ํฌ์Šค์ผ€์ดํ”„ ์„ค์น˜

์–ด์ฉŒ๋ฉด ์šฐ๋ฆฌ๋Š” ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๊ฒƒ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ํšŒ์‹ ํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.

2015๋…„ 2์›” 10์ผ ์˜คํ›„ 1์‹œ 17๋ถ„์— Donald Stufft๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์•„, ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์„ ์žŠ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  ๋‹น์‹ ์€
devubtu์— ์‚ฌ์šฉ์ž ๋กœ์ปฌ bin์ด ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•  ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฒฝ๋กœ?

ํ™•์‹คํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์•„๋งˆ๋„ adduser ๋˜๋Š” passwd ํŒจํ‚ค์ง€? ์ „์ž๊ฐ€ ์†Œ์œ 
/usr/sbin/adduser ๋ฐ ํ›„์ž๋Š” /usr/bin/useradd๋ฅผ ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ํŒจ์Šค: https://github.com/pypa/pip/pull/2418

๋„์›€์ด ๋˜์‹ค์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค๋งŒ...

  • ~/.local/bin์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์˜ $PATH์— ์—†์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ผ๋ถ€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋Š” $PATH์— ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด /etc/profiled.d/ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ Antergos์—์„œ๋Š” jre.csh, jre.sh, perlbin.csh, perlbin.sh๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Do not change this unless you want to completely by-pass Arch Linux' way
# of handling Java versions and vendors. Instead, please use script `archlinux-java`
setenv PATH "${PATH}:/usr/lib/jvm/default/bin"
# Do not change this unless you want to completely by-pass Arch Linux' way
# of handling Java versions and vendors. Instead, please use script `archlinux-java`
export PATH=${PATH}:/usr/lib/jvm/default/bin
# Set path to perl scriptdirs if they exist
# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_Scripts
# Added /usr/bin/*_perl dirs for scripts
# Remove /usr/lib/perl5/*_perl/bin in next release

[ -d /usr/bin/site_perl ] && setenv PATH ${PATH}:/usr/bin/site_perl
[ -d /usr/lib/perl5/site_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/site_perl/bin

[ -d /usr/bin/vendor_perl ] && setenv PATH ${PATH}:/usr/bin/vendor_perl
[ -d /usr/lib/perl5/vendor_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/vendor_perl/bin

[ -d /usr/bin/core_perl ] && setenv PATH ${PATH}:/usr/bin/core_perl

# If you have modules in non-standard directories you can add them here.
#export PERLLIB=dir1:dir2
# Set path to perl scriptdirs if they exist
# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_Scripts
# Added /usr/bin/*_perl dirs for scripts
# Remove /usr/lib/perl5/*_perl/bin in next release

[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin

[ -d /usr/bin/vendor_perl ] && PATH=$PATH:/usr/bin/vendor_perl
[ -d /usr/lib/perl5/vendor_perl/bin ] && PATH=$PATH:/usr/lib/perl5/vendor_perl/bin

[ -d /usr/bin/core_perl ] && PATH=$PATH:/usr/bin/core_perl

export PATH

# If you have modules in non-standard directories you can add them here.
#export PERLLIB=dir1:dir2

์ž„์˜์˜ pip ์‚ฌ์šฉ์ž๋กœ์„œ ์ด์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ๊ฐœ์„  ์ด์ •ํ‘œ์— ์บก์ฒ˜๋œ ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ž‘์—…์— ๋Œ€ํ•ด _๊ณ ๋ง™์Šต๋‹ˆ๋‹ค_. ์ด ๋…ธ๋ ฅ์— ์žฌ์ •์ ์œผ๋กœ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ œ์ณ๋‘๊ณ , ์ €๋Š” Homebrew ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  brew install something ํ•  ์ˆ˜ ์žˆ๊ณ  ๊ถŒํ•œ์— ๋Œ€ํ•œ ์†Œ๋ž€ ์—†์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ํ•ญ์ƒ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Homebrew๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐ sudo ๊ฐ€ ์ „ํ˜€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ฉด pip install --user something ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์—ญ์„ค์ ์ด๊ฒŒ๋„ Homebrew๋Š” distutils์—์„œ ๋ณด๊ณ ๋œ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์ด๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค .

OS X์—์„œ Homebrew์˜ ์ธ๊ธฐ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ Homebrew์™€ pip install --user ์˜ ์ด๋Ÿฌํ•œ ๋น„ํ˜ธํ™˜์„ฑ์„ ์กฐ์‚ฌํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  --user ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๋งŒ๋“ค ๋•Œ +1ํ•ฉ๋‹ˆ๋‹ค.

๋น ๋ฅธ ํ›„์† ์กฐ์น˜. Didier๋Š” --user๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” Ubuntu์˜ pip์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ƒ์ƒํ•˜๊ฒŒ ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์„ ๋Œ€๋ถ€๋ถ„ ํ—ˆ์šฉํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ทธ๊ฒƒ์ด ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๊ทธ๊ฒƒ์„ wily๋กœ ๋˜๋Œ๋ฆด ์˜ˆ์ •์ž…๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์•„๋งˆ๋„ SRU๊ฐ€ ์ƒ์ƒํ•˜๊ฒŒ ๋ณ€๊ฒฝ๋˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ๊ทผ๊ฑฐ๋Š” https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1460203 ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‚ฌ์šฉ์ž ๋Œ€ ์‹œ์Šคํ…œ ๊ตฌ๋ถ„์ด ํ”Œ๋žซํผ ์ฐจ์ด ์—†์ด ์ด๋ฏธ ์ถฉ๋ถ„ํžˆ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ธฐ ๋•Œ๋ฌธ์— ์—…์ŠคํŠธ๋ฆผ์ด ์ด ๋ณ€๊ฒฝ์˜ ํƒ€์ด๋ฐ์„ ์ฃผ๋„ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐ +1์ž…๋‹ˆ๋‹ค.

์ฆ‰, Linux ๋ฐฐํฌํŒ์€ --global ์ง€์›์ด ์—…์ŠคํŠธ๋ฆผ pip(pip 8?)์— ๋„๋‹ฌํ•˜์ž๋งˆ์ž ๊ธฐ๋ณธ๊ฐ’์„ --user๋กœ ๋’ค์ง‘๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. per-venv installs๋Š” ์ž ์žฌ์ ์œผ๋กœ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๋ถ€์ž‘์šฉ์ด ์žˆ๋Š” ๋‚˜์œ ์ƒ๊ฐ์œผ๋กœ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

@warsaw ์—๊ฒŒ ๊ฐœ์ธ์ ์œผ๋กœ ๋งํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ๋„ ๋งํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ณ€๊ฒฝ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์— ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ์— ๊ฑธ์ณ ์žˆ๋Š” ํ•œ ์‚ฌ๋žŒ์ด๊ณ  ์ง€๊ธˆ ์ด ๋ณ€ํ™”๋ณด๋‹ค Warehouse๊ฐ€ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด PyPI ๋ ˆ๊ฑฐ์‹œ๊ฐ€ ์šด์˜์— ์ ์  ๋” ๋ถ€๋‹ด์ด ๋˜๊ณ  ์žˆ๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์ด๋ฅผ ๊ต์ฒดํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ pip์— ๋Œ€ํ•œ ์ œ ์‹œ๊ฐ„์€ ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ธฐ์—ฌ์ž๊ฐ€ ๋งŒ๋“œ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค ํ•ญ๋ชฉ์„ ์•ˆ๋‚ดํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค.

์ฆ‰, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ๊ธฐ๋Šฅ์ด ๋” ๋นจ๋ฆฌ ์ถœ์‹œ๋˜๋Š” ๋ฐ ์ •๋ง๋กœ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋‚ด ์ž‘์—…์„ ์„ ํƒํ•˜๊ณ  ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚˜๋Š” ๊ธฐ๊บผ์ด ๊ฒ€ํ† ํ•˜๊ณ  ๋ณ‘ํ•ฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ•˜๊ณ  ์‹ถ์–ดํ•˜๊ณ  ๋ณ€ํ™”์— ๋Œ€ํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•˜๊ณ ์ž ํ•˜๋Š” ๋ˆ„๊ตฌ์™€๋„ ๊ทธ๊ฒƒ์„ ํ†ตํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‚˜์—๊ฒŒ ๋” ์‹œ๊ธ‰ํ•œ ํ•ญ๋ชฉ์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์‹œ์ ์—์„œ ๋ฐ˜๋ณตํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

'--user ๊ธฐ๋ณธ๊ฐ’'์„ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋œ ๋ฐฉํ•ด๊ฐ€ ๋˜๋Š” ๋Œ€์•ˆ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. --user๋กœ ๋Œ€์ฒด(๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„ค์น˜๊ฐ€ ์‹คํŒจํ•œ ๊ฒฝ์šฐ)
  2. (๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„ค์น˜๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ) ์‚ฌ์šฉ์ž์—๊ฒŒ (์นœํ•œ ํฐ ๊ธ€์ž๋กœ) --user๋ฅผ ์‹œ๋„ํ•˜๋„๋ก ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

FWIW, ์ด์ œ Python 3.5์šฉ Windows ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉ์ž๋ณ„ ์„ค์น˜๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ถŒ์žฅํ•˜๋ฏ€๋กœ pip์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ทธ๋‹ค์ง€ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋ณธ๊ฐ’์ด๋‚˜ ๋Œ€์ฒด(fallback)๋ณด๋‹ค ๋ฐฐํฌํŒ( --global ์žฌ์ •์˜ ํฌํ•จ)์— ๋Œ€ํ•ด ๋” ๋‚˜์€ ๊ตฌ์„ฑ ์˜ต์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ +1ํ•˜๊ณ  ์ž‘์—…ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๊ณผํ•™์ ์ธ Python ์—ฌ๋ฆ„ ํ•™๊ต๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ถŒํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์„ ๋•Œ sudo pip install ํ–ˆ์Šต๋‹ˆ๋‹ค.

FWIW ์ €๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ --user ๋กœ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„ค์น˜๊ฐ€ ์‹คํŒจํ•˜๋ฉด --user ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์„ ์ฐฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ, ๋‚˜๋Š” ๊ทธ๋“ค์—๊ฒŒ ์‹คํŒจํ•˜๊ณ  ๋‹ค์‹œ ์‹œ๋„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ทธ๋“ค์ด ํ•œ ์ผ์„ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ง€์นจ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: We installed to your user directory. If you don't want this, then 'pip uninstall my_package' ).

--user๋กœ ์ธํ•ด ๋ชจ์˜์— ๋Œ€ํ•œ ๋งŽ์€ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ Ubuntu์—์„œ๋Š” --user์˜ ์œ„์น˜๊ฐ€ dist-packages ๋’ค์— ์žˆ์œผ๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ์ข…์†์„ฑ์— ๋Œ€ํ•ด ์„ค์น˜๋œ pip๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์˜ˆ: 6) dist ํŒจํ‚ค์ง€์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๊ทธ๊ฒƒ์„ _after_ dist-packages ? ๊ทธ๊ฒƒ์€ ๊นจ์ง„ ์„ค์น˜ IMO์ž…๋‹ˆ๋‹ค.

๋งž์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์„ค์น˜๋Š” site(/dist)-ํŒจํ‚ค์ง€๋ณด๋‹ค ๋จผ์ € ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ์Šคํฌ๋ฆฝํŠธ ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” -I(๋˜๋Š” Python 2์˜ ๊ฒฝ์šฐ -E)์™€ ํ•จ๊ป˜ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜, ๋‚œ ๋™์˜ :). ์ƒ์ƒํ•˜๊ฒŒ ์ˆ˜์ •๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์™„์ „ํžˆ ์ž˜๋ชป๋œ ๊ณณ์—์„œ ์ผ์ด ์˜ค๊ณ  ์žˆ๋‹ค๋Š” ๋ณด๊ณ ๊ฐ€ ๋ถ„๋ช…ํžˆ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‹คํ—˜์„ ์œ„ํ•ด ์‹œ์Šคํ…œ pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์ƒํ•œ ์ปดํ“จํ„ฐ์— setuptools๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

>>> import setuptools
>>> setuptools.__path__
['/home/robertc/.local/lib/python2.7/site-packages/setuptools']
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/home/robertc/.local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/home/robertc/work/mock']

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ์ œ์ •์‹ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ๋„ ์ด๊ฒƒ์€ ์ƒ์ƒํ•œ - ๊ทธ๋ž˜์„œ IDK์—์„œ ์†Œ๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์‹œ์ ์—์„œ ์žฌ์ƒ๊ธฐ๋ฅผ ํŒŒ๋‚ผ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค (Ubuntu BTS์— ํŒŒ์ผ๋งํ•˜๊ธฐ ์œ„ํ•ด)

ํŽ˜์ด์ง• @warsaw

์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋Š” setuptools์˜ ์‚ฌ์•…ํ•œ .pth ํŒŒ์ผ ์— ์˜ํ•ด ์ „์—ญ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ์ดํ›„๋กœ ์žฌ์ •๋ ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ setup.py ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์šธ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•˜๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ด์ „ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๋ฒˆ ํ›„, ๋‚˜๋Š” ๋‚ด ์‹œ์Šคํ…œ์„ ํ’€๊ธฐ ์œ„ํ•œ ๊ณต๊ฒฉ์ ์ธ ๋„๊ตฌ ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ ์–ด๋„ ๋‹น๋ถ„๊ฐ„ pip๋Š” ๋ช…๋ น์ด ์‹คํŒจํ•˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ --user ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์นœ์ˆ™ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ด์ ์ด ์žˆ์ง€๋งŒ ๋” ๋‚˜์€ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์‡„ํ•˜๋Š” ๊ฒƒ์€ ๋„ˆ๋ฌด ์–ด๋ ต์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ --user ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ด๋™ํ•  ๋•Œ๊นŒ์ง€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ "๋น ๋ฅธ ์ˆ˜์ •"์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋ชจ๋“œ๊ฐ€ /etc/pip.conf์— ์„ค์ •๋œ ๊ฒฝ์šฐ --global, --system ๋˜๋Š” --no-user๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜์žˆ๋Š” ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๊ฒƒ์„ ๋ฌด์‹œํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•œ ์ข‹์€ "๋น ๋ฅธ ์ˆ˜์ •"์ž…๋‹ˆ๋‹ค.

๋Šฆ์€ ์—…๋ฐ์ดํŠธ: #4233์ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

Windows๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค(ํŠนํžˆ ์‹ ๊ทœ ์ด๋ฏผ์ž)์ด ์ข‹์€ ๊ฒฝํ—˜์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์‹ค์ œ๋กœ https://github.com/pyenv/pyenv ๋กœ ์•ˆ๋‚ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ~/.local ๊ฐ€ XDG_DATA_HOME์ด๊ธฐ ๋•Œ๋ฌธ์— PEP 370์€ ์˜ค๋Š˜๋‚  ๋‚˜์—๊ฒŒ ๊ทธ๋‹ค์ง€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ํ–‰๋™์ด ๋‹ฅ์น˜๋ฉด ์ด ํ–‰๋™์„ ์„ ํƒํ•˜์ง€ ์•Š์„ ์œ ์ผํ•œ ์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. pyenv์— ๋งค์šฐ ๋งŒ์กฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „ํ™˜์ด ์›ํ™œํ•˜๊ณ  ์‹œ์Šคํ…œ ์ž‘๋™ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์ถ”๊ฐ€ CLI ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ฌผ๋ก  pyenv๊ฐ€ Windows์—์„œ ์–ผ๋งˆ๋‚˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅด์ง€๋งŒ bash ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

@jcrben pyenv ๋Š” ์‚ฌ๋žŒ๋“ค์ด Python์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•(ํŠนํžˆ Python ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•)์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ฐ€์ •์„ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋Ÿฌํ•œ ๊ฐ€์ •์ด ์œ ํšจํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ๋งค์šฐ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ๋˜๊ธฐ์—๋Š” ์ถฉ๋ถ„ํžˆ ๋ณดํŽธ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์ด ์ ์—์„œ conda ์™€ ์œ ์‚ฌํ•จ).

pip ์ˆ˜์ค€์˜ --user ๊ธฐ๋ณธ๊ฐ’์€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋œ Python ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด์—์„œ๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ๋ณ€๊ฒฝ์ด conda ๋ฐ pyenv ์™€ ๊ฐ™์€ ํƒ€์‚ฌ ํ™˜๊ฒฝ ๊ด€๋ฆฌ์ž์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ pip ๋ฐ ๊ธฐํƒ€ ๋„๊ตฌ๊ฐ€ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ(์ฆ‰, virtualenv ๋ณด๊ณ ํ•˜๋Š” ๋ฐฉ์‹, ๋˜๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ venv ๋ฐฉ์‹).

๊ด€๋ จ ์ œ์•ˆ: https://github.com/pypa/pip/issues/1056#issuecomment -218130183.

~ ~/.local ์— ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก(์•„๋งˆ๋„ env ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด) ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ณ ๋ ค๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์•„๋งˆ๋„ ๊ทธ๊ฒƒ๋“ค์„ ~/.local/pip ๋˜๋Š” ๋ฌด์—‡์ธ๊ฐ€์— ๋‚ดํฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค - ๋‚ด๊ฐ€ ์—ผ๋ คํ•˜๋Š” ํ•œ Python์€ ํ•ด๋‹น ๊ณต์œ  ๊ณต๊ฐ„์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค. ~ 9.0.1์—์„œ๋Š” ~/.local/lib/python<version> ์•„๋ž˜์— ํ•ญ๋ชฉ์„ ์ค‘์ฒฉํ•˜๊ณ  ~/.local/bin ์— ์‹คํ–‰ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

@jcrben Aye, ๋Œ€์ƒ ์œ„์น˜๋Š” ์‹ค์ œ๋กœ Python์˜ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋ฉฐ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ช…๋ช… ์ฒด๊ณ„๋ฅผ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. https://docs.python.org/3/library/site.html#site.USER_SITE

์ด๋Š” PYTHONUSERBASE ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์ˆ˜์ค€์—์„œ ์ด๋ฏธ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://docs.python.org/3/using/cmdline.html#envvar -PYTHONUSERBASE

๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ด ๋™์ž‘์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋Š” ํŒจํ‚ค์ง€ ๋ช…๋ น install , uninstall ๋ฐ update ๊ฐ€ ์žˆ๋Š” https://github.com/ofek/hatch ๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž๋Š” https://github.com/npm/npm ๊ณผ ์œ ์‚ฌํ•œ -g/--global ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PyPI ์˜ ๋งฌ์›จ์–ด ๊ฐ์—ผ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ตœ๊ทผ ๋ฌธ์ œ๋ฅผ ๊ฐ์•ˆํ•  ๋•Œ, ํŠนํžˆ ์„ค์ • ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„ค์น˜ ์‹œ ์ž„์˜์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜์—ฌ sudo pip install ... ์˜ ์‚ฌ์šฉ์„ ์–ต์ œํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์„ ํ•˜๋Š” ๊ฒƒ์ด pip์— ๊ฐ€์žฅ ์œ ์ตํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์—ผ๋œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉ์ž๋กœ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ ๋ฃจํŠธ๋กœ ์„ค์น˜ํ•˜๋ฉด ํ›จ์”ฌ ๋” ๋‚˜์ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด pip ๋ช…๋ น ์•ž์— sudo๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ค„์–ด๋“ค์–ด ์‹ค์ˆ˜๋กœ ์„ค์น˜๋œ ๋งฌ์›จ์–ด๊ฐ€ ๋” ์ ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ --global ํ”Œ๋ž˜๊ทธ ์ถ”๊ฐ€์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/pypa/pip/issues/4865

์ด๊ฒƒ์€ virtualenv ๋˜๋Š” conda ํ™˜๊ฒฝ์—์„œ ๊ฑฐ์˜ ํ™•์‹คํžˆ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ํ•œ ํ™˜๊ฒฝ์ด ํ™œ์„ฑ ์ƒํƒœ์ผ ๋•Œ .local ์— ์„ค์น˜๋œ ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค๋ฅธ ํ™˜๊ฒฝ์„ ์‰ฝ๊ฒŒ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ ๊ฒฝ์šฐ์—๋Š” ์–ด๋–ค ์ƒ๊ฐ์„ ํ•˜๊ณ  ์žˆ์„๊นŒ์š”?

cc @msarahan @kalefranz

์ด ๋ฌธ์ œ๋Š” ํ™œ์„ฑ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋‚ด๋ถ€์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™œ์„ฑ ํ™˜๊ฒฝ์ด ๊ฐ์ง€๋˜์ง€ ์•Š๊ณ  ๋Œ€์ƒ ์ •์˜ ์˜ต์…˜( --prefix , --root ๋“ฑ)์ด ์ œ๊ณต๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์ค„์—์„œ.

์ด๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๊ฒฐ์ •๋˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ conda์— ์˜ํ•ด ์„ค์น˜๋œ ๋ชจ๋“  python์ธ conda ํ™˜๊ฒฝ ๋‚ด๋ถ€์˜ python์— ๋Œ€ํ•ด sys.path ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ~/.local ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์˜ ๊ธฐ๋Œ€์น˜๋ฅผ ์œ„๋ฐ˜ํ•˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/conda/conda/issues/7173 ์—์„œ ํ† ๋ก 

pip๊ฐ€ PIP_ ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—์„œ ์ธ์ˆ˜๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๊นŒ? --user ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ? ์ „์ฒด ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

PIP_USER ์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œ: https://pip.pypa.io/en/stable/user_guide/#environment -๋ณ€์ˆ˜

PIP_USER=yes ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ •์˜ํ•˜๋ฉด ๋ช…๋ น์ด ํ˜ธ์ถœ๋  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ๋˜๋ฏ€๋กœ CI ์‚ฌ์šฉ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ผ๋ถ€ ๋‹จ๊ณ„๋Š” virtualemv ์—†์ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜๊ณ  ์ผ๋ถ€๋Š” virtualenv ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” travis์— ๋Œ€ํ•ด ์ •๋ง ์ถ”์•…ํ•œ ๋…ผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

virtualenv ๋‚ด๋ถ€๋Š” ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€(๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ณ  ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํŒจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

bash์—์„œ virtualenv๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  -user ์ถ”๊ฐ€๋ฅผ ํ”ผํ•ด์•ผ ํ–ˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ถ”์•…ํ•˜๊ณ  ๋””๋ฒ„๊น…์— ๋งŽ์€ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ์‹œ์Šคํ…œ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์„ค์น˜์™€ ๊ด€๋ จํ•˜์—ฌ ๋Œ€์ฒด๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋Š” ์˜ต์…˜์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

pip๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ์žฅ์†Œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‹คํŒจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์›€์ง์ž„์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์–ธ๊ธ‰๋œ ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ sudo์—์„œ ์‹คํ–‰ํ•  ๋•Œ --user๊ฐ€ ์ „๋‹ฌ๋˜๋ฉด pip๊ฐ€ ๋ถˆํ‰ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” pip ๋ฐ python์—์„œ ๋ฉ€์–ด์ง€๊ณ  ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ ์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋˜๋Š” javascript ๋ฐ npm๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ด์ฌ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ƒˆ๋กœ์šด ์ดˆ๋ณด์ž์—๊ฒŒ๋Š” ์ด๋Ÿฌํ•œ ์ถ”๊ฐ€ ํ•„์ˆ˜ ์˜ต์…˜์ด ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

--user๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์—†๋‚˜์š”? ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ๋ถˆํ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— pip --target์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@dmikov : ๊ธฐ๋ณธ๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. Debian/Ubuntu ๊นจ์ง„ ๋ฒ„์ „ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ PIP_USER=0 pip install -t ... ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ --user ๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์ •๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ ๊ณต์‹ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฐค์— --user ์˜ต์…˜์ด ๊ธฐ๋ณธ๊ฐ’์ด ๋˜๋Š” ๊ฟˆ์„ ๊พธ์—ˆ์Šต๋‹ˆ๋‹ค(๋†๋‹ด ์•„๋‹˜). ๋‚ด ๊ฟˆ์ด ๊ณง ์ด๋ฃจ์–ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ž˜๋ชป๋œ ๊ตฌ๋ฌธ์ด ๊ณ„์† ํ‘œ์‹œ๋˜๋Š” ํŒŒ์ด ๊ฒŒ์ž„ ์„ค์น˜์— ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์‚ฌ์šฉํ–ˆ๋‹ค
python3 -m pip ์„ค์น˜ -U ํŒŒ์ด ๊ฒŒ์ž„ --์‚ฌ์šฉ์ž
์ด๊ฒŒ ์ž˜๋ชป๋œ ๊ฑด๊ฐ€์š”?

@flamedro56 : ์ž„์˜์˜ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผํ‰ํ•˜๋Š” ๋Œ€์‹  ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  Python ๋ฒ„์ „, pip ๋ฒ„์ „, ์šด์˜ ์ฒด์ œ, ๋ช…๋ น ์ถœ๋ ฅ ๋“ฑ์˜ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜์„ธ์š”.

์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ reCAPTCHA

์ƒˆ๋กœ์šด ๊ตฌ์„ฑ ์˜ต์…˜ default=system,user๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์•„๋ฌด๋„ "๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ๋„ ํ•ญ์ƒ ์‚ฌ์šฉ์ž"๋ฅผ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ๋ช…์‹œ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ •์ƒ์ ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

#4575๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

Manjaro ๊ฐ€ --user ์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์—…์ŠคํŠธ๋ฆผ์—์„œ ์ƒˆ๋กœ์šด ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@Tids : "filesystem-2018.9-3์€ ๊ธฐ๋ณธ์ ์œผ๋กœ $HOME/.local/bin์„ $PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค." Manjaro๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒํ•˜๊ณ ์žˆ๋Š” ํ•ต์‹ฌ ์ถ”๊ฐ€ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค.

Debian์€ Python ์ˆ˜์ค€์—์„œ "default to --user"๋ฅผ ์‚ฌ์šฉ์ž ๊ณ„์ • ์ˆ˜์ค€์—์„œ "$HOME/.local/bin์ด ๊ธฐ๋ณธ์ ์œผ๋กœ $PATH์— ์—†์Šต๋‹ˆ๋‹ค"์™€ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ฝค๋ณด์ž…๋‹ˆ๋‹ค.

#7002์—์„œ ์ „์—ญ site-packages dir์„ ์“ธ ์ˆ˜ ์—†๊ณ  ์‚ฌ์šฉ์ž site-packages๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ pip๊ฐ€ ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ™˜๊ฒฝ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” ํ•œ ํ™˜๊ฒฝ์— ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํฌ๊ฒŒ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๋จผ์ € ์•„์ด๋””์–ด์— ๋Œ€ํ•œ ํ† ๋ก ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์„ ๊ฒ€ํ† ํ•˜๋Š” ๋ฐ ์ˆ˜๋ ์— ๋น ์ง€์ง€ ๋ง๊ณ  ๊ทธ ์ผ์„ ํ•˜๋Š” ๊ฒƒ์ด ํƒ€๋‹นํ•œ์ง€ ์ƒ๊ฐํ•˜์ง€ ๋ง™์‹œ๋‹ค.

์‚ฌ์šฉ์ž ์„ค์น˜์™€ ๋น„์‚ฌ์šฉ์ž ์„ค์น˜(pip ์ž์ฒด์˜)๋ฅผ ํ˜ผํ•ฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ #7209๋ฅผ ํ•œ ์˜ˆ๋กœ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ๋ฌธ์ œ์™€ ์ง์ ‘์ ์ธ ๊ด€๋ จ์€ ์—†์ง€๋งŒ(์‹ค์ œ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ƒํ™ฉ์ด ๋‹ค์†Œ ์™„ํ™”๋  ์ˆ˜ ์žˆ์Œ) --user ๋กœ์˜ ์ „ํ™˜์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‹ ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค.

(์ €๋Š” ์ฃผ๋กœ ์ด ์ฃผ์„์„ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์–ด๋”˜๊ฐ€์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ pip ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ Python์˜ USER_SITE ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ•ฉ๋ณ‘์ฆ์ด๋ฉฐ --user ๋กœ ์„ค์น˜ํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

PATH (๋ช…๋ น ์ฐพ๊ธฐ์šฉ) ๋ฐ sys.path (Python ๊ฐ€์ ธ์˜ค๊ธฐ ์ฐพ๊ธฐ์šฉ)์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋ฐ˜๋Œ€์ด๋ฏ€๋กœ ํ•œ ์„ค์น˜์˜ ๋Ÿฐ์ฒ˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ๋กœ๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ. ์•„๋งˆ๋„ pip์—๋งŒ ๊ตญํ•œ๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ชจ๋“  ํŒจํ‚ค์ง€์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ƒ๊ฐํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์—๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋„ค, ๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ์—ผ๋‘์— ๋‘์—ˆ๋˜ ์ฃผ์š” "USER_SITE์˜ ํ•ฉ๋ณ‘์ฆ"์ž…๋‹ˆ๋‹ค. IMO, ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  python -m pip ๋งŒ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ๊ณผ์ ์ธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. (์ €๋Š” ๋ž˜ํผ ์ž์ฒด์— ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ๋žŒ๋“ค์ด ์‹ค์ˆ˜๋กœ ์ž˜๋ชป๋œ ๋ž˜ํผ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ • ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ pip ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ "์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์˜ ์ž˜๋ชป๋œ ๊ตฌ์„ฑ ์ง„๋‹จ ๋ฐ ์ˆ˜์ • " ๋ฌธ์ œ)

pip ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด pip๊ฐ€ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ธ๊ฐ€์š”?

๋‚˜๋Š” ํ™•์‹คํžˆ ํ›„์ž์— ๋Œ€ํ•ด -1์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์„ค์น˜ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

$#$ python -m pip pip ๋ฅผ ๋น„์ถ”์ฒœํ•˜๋Š” ๊ฒƒ์ด ๋” ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pip๊ฐ€ ์‹คํ–‰ ์ค‘์ธ Python ํ™˜๊ฒฝ์— ์„ค์น˜๋  ๋•Œ ์–ด๋–ค ํ™˜๊ฒฝ์ธ์ง€ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํŽธ์˜์„ฑ์„ ์ƒ์‹คํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฒƒ์— ํฐ ํœด์‹์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ํŠนํžˆ pip ์ž์ฒด์— ๋Œ€ํ•œ ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์˜๋ฏธํ–ˆ์Šต๋‹ˆ๋‹ค. ํŽธ์˜์„ฑ ์ƒ์‹ค์— ๋™์˜ํ•˜๊ณ  ์–ด๋–ค ํ˜•ํƒœ๋กœ๋“  ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(#3164๋Š” ๋ž˜ํผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ƒˆ๋กœ์šด pip-cli ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์•ˆํ•จ). ๊ทธ๋Ÿฌ๋‚˜ ํ•ต์‹ฌ์€ python -m pip ์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€์› ๋˜๋Š” pip ์‹คํ–‰ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ python (PATH ๋˜๋Š” python -m pip ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ํ•ญ๋ชฉ)์ด $#์—์„œ ์‚ฌ์šฉํ•˜๋Š” pip python ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ pip ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. pip ? ์ด๋Ÿฐ ์‹์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด python -m pip ์— ์œ„์ž„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๊นŒ?

์œ ์‚ฌํ•˜๊ฒŒ, pipenv๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ virtualenv์— ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ํ•˜๊ณ , ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋‚ด๋ณด๋‚ธ ํ›„ ์ž์‹ ์˜ virtualenv๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹  ํ•ด๋‹น virtualenv๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž, ์—ฌ๊ธฐ์—์„œ #7002๋Š” ์ด ์‹œ์ ์—์„œ 6๋ช…์˜ pip ์œ ์ง€ ๊ด€๋ฆฌ์ž ์ค‘ 3๋ช…์˜ ์Šน์ธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„์‚ฌ์šฉ์ž ์„ค์น˜์—์„œ ์‚ฌ์šฉ์ž ์„ค์น˜๋กœ pip ์ „ํ™˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ๋” ํฐ ์šฐ๋ ค ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ๊ทธ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๋งŒ๋“œ๋Š” ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์„ค์น˜๋กœ ์ „ํ™˜ํ•˜๋ฉด ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์˜ตํŠธ์•„์›ƒํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด --no-user ์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅผ๊นŒ์š”? (๋ช…์‹œ์  ์˜ตํŠธ์•„์›ƒ์œผ๋กœ --no-user ์˜ ์ด๋ฆ„์„ --global ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.)
  • ์šฐ๋ฆฌ์˜ "์ „ํ™˜" ์ „๋žต์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

    • ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?

    • ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•  ๋•Œ ์ฃผ์˜ํ•˜๋ผ๊ณ  ๋งํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

    • ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ตฌํ˜„๋˜๊ณ  ๋ฆด๋ฆฌ์Šค๋  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ์ œ๊ธฐํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๊นŒ?

ํ™˜๊ฒฝ ๋‚ด๋ถ€์— ์žˆ๋‹ค๋ฉด --global ์˜ ์ด๋ฆ„์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. flit install ์˜ ๊ฒฝ์šฐ --user ์˜ ๋ฐ˜๋Œ€๋Š” --env ์ž…๋‹ˆ๋‹ค. "์‹œ์Šคํ…œ Python ํ™˜๊ฒฝ"์„ ๋Š์Šจํ•˜๊ฒŒ ํฌํ•จํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๊ทธ๊ฒƒ๋„ ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ --no-user ๊ฐ€ ์—ฌ์ „ํžˆ ์ตœ์„ ์˜ ์„ ํƒ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. --user ์˜ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊ธฐ๋ณธ๊ฐ’์€ ์‚ฌ์‹ค์ƒ user = False ์ด๋ฏ€๋กœ --no-user (๋˜๋Š” ๋™๋“ฑํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ตฌ์„ฑ ํ•ญ๋ชฉ)์ด ๊ธฐ์กด ๋™์ž‘์„ ๋˜๋Œ๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด๋‚ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ™˜๊ฒฝ(์˜ˆ: conda๊ฐ€ ํ™œ์„ฑํ™”๋œ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ)์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์„ค์น˜์— ๋Œ€ํ•œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋”๋ผ๋„. ๊ฐœ์„ ํ•  ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋‚˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ๊ฐ€๋Šฅ์„ฑ ๊ฐ์ง€๊ฐ€ ์ž˜๋ชป๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์–‘์„ฑ์€ ๊ธฐ์กด ๋™์ž‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์ผ๋ฐ˜ ์„ค์น˜๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์‹คํŒจ). ๊ฑฐ์ง“ ๋ถ€์ •์€ ์ •์ƒ์ ์ธ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ ์‚ฌ์šฉ์ž ์„ค์น˜์—์„œ ์‚ฌ์šฉ์ž ์„ค์น˜๋กœ pip ์ „ํ™˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Windows์—์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ (๊ธฐ๋ณธ์ ์œผ๋กœ) Python ์„ค์น˜๋Š” ์‚ฌ์šฉ์ž๋ณ„ ์„ค์น˜์ด๊ณ  ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ #7002์— ๋Œ€ํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ด ๋ฌธ์ œ(#1668)๊ฐ€ ์—ด๋ฆฐ ์ดํ›„์˜ ๊ฒฝํ—˜์€ pip์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€๊ฐ€ ๋‘˜ ๋‹ค ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€์— ์„ค์น˜๋œ "ํ˜ผํ•ฉ" ํ™˜๊ฒฝ์—์„œ ์—‰๋ง์ด ๋˜๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์‰ฝ๋‹ค๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๋ฐ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ. ๊ทธ๋ž˜์„œ ์ง€๊ธˆ์€ ๊ฐ€๋Šฅํ•˜๋ฉด ์‹œ์Šคํ…œ ์„ค์น˜๋ฅผ ํ•˜๊ณ , ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†๋Š” Linux ์‹œ์Šคํ…œ ๊ด€๋ฆฌ Python๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๋ผ๊ณ  ํ•œ:

  1. #7002๋Š” ์‹œ์Šคํ…œ ์„ค์น˜๊ฐ€ ์‹คํŒจํ•  ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ --no-user ์˜ต์…˜์€ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  2. ์ „ํ™˜๊ณผ ๊ด€๋ จํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ์˜์‚ฌ ์†Œํ†ตํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๊ฒƒ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์ค‘ ์„ค์น˜์— ๋Œ€ํ•ด ๋งค์šฐ ์กฐ์‹ฌํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” pip์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž ์ดํ•ด์™€ ๊ต์œก์— ์˜ํ•ด์„œ๋งŒ ์ฒ˜๋ฆฌ ๋  ์ˆ˜์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ต์‹ฌ ํŒŒ์ด์ฌ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ๋ฅผ ์„€๋„์ž‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋ณด๊ณ ํ•˜๋„๋ก pip check ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š”...

--no-user ์˜ต์…˜์— ๋Œ€ํ•œ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ์ด๋ฏธ ์กด์žฌํ•˜์ง€๋งŒ ์ข…์ข… ์œ ์šฉํ•˜์ง€๋Š” ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ํŒŒ์ผ์— user=true ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ --no-user ๊ฐ€ ์ด๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋” ๋ช…ํ™•ํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ @pradyunsg ๊ฐ€ ์˜๋ฏธํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋Š” ์˜๋ฏธ์—์„œ "๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์„ค์น˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์˜ตํŠธ์•„์›ƒํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜"์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด "๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์„ค์น˜๋กœ ์ „ํ™˜"๊ณผ ๋™์ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .

์‚ฌ์‹ค, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋” ๋ช…ํ™•ํ•œ์ง€ ํ™•์‹ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค ;-) ์•„๋งˆ๋„ ๋‚ด๊ฐ€ ๋งํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ "ํ˜„์žฌ ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์˜ต์…˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"...

ํ ... @pfmoore #7002 ์ดํ›„์— ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๊ณ  ํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•œ๊ฐ€์š”?

์ถ”์‹ : ๊ทธ ์ด์ „ ๋Œ“๊ธ€์„ ๊ธ‰ํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ ์‹ค์ˆ˜๋กœ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์•Œ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ฒŒ์‹œ๋˜๊ธฐ ์ „์— ๊ทธ ๋‹จ๋ฝ์˜ ์ดˆ์•ˆ์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜ผ๋ž€์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

@pradyunsg ์ด์ œ ์ ˆ๋Œ€์ ์œผ๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด --user ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝํ–ฅ์ด ํ›จ์”ฌ ์ค„์–ด๋“ค์—ˆ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ(์‚ฌ๋ก€ #7002 ์ฃผ์†Œ) ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ธฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. #7002๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋” ์ด์ƒ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค.

2๊ฐœ์˜ ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ๋ฅผ #7002๋ฅผ ์™„์ „ํ•œ ๊ฒƒ์œผ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ทจํ•˜๋ฉด ์œ„ ์˜ ๋‚ด ์˜๊ฒฌ์ด ์ด๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค.
https://pip.pypa.io/en/stable/news/#id3
"๊ธฐ๋ณธ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์“ฐ๊ธฐ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์„ค์น˜(--user๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์ฒ˜๋Ÿผ)๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ๊ฐ’์ž…๋‹ˆ๋‹ค. (#1668)"

๋‚ด ๋นŒ๋“œ๋Š” ์ด์ œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

์ด๊ฒƒ์€ ๋‚ด pip ๋ช…๋ น์—์„œ --user๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์˜ˆ์ƒ๋œ ํ–‰๋™์ด์—ˆ์Šต๋‹ˆ๊นŒ? ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋Š” ์ด๊ฒƒ์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์ œ pip 20.0.1์—์„œ ์‹คํŒจํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๋งํฌ(--user๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ํ•˜๋“œ ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์ •๋จ)
https://github.com/lfit/releng-global-jjb/blob/master/shell/python-tools-install.sh

์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ํ•ด๋‹น ํ™˜๊ฒฝ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ๋งž๋‹ค๋ฉด ์ด๋Š” ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ด์ง€๋งŒ ์ด PR๊ณผ ์ง๊ตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒ€์‚ฌ๋Š” ๋ช‡ ๋…„ ์ „์— ๋„์ž…๋˜์—ˆ์ง€๋งŒ(#567) ์ตœ๊ทผ๊นŒ์ง€(#7155) venv๋กœ ์ธํ•ด ์†์ƒ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

venv(PEP 405)๋กœ ์ƒ์„ฑ๋œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์•„ ๋„ค, ๋Œ“๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๋‹ค ...
๋‚ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ .local/bin/์„ ์ฑ„์šฐ๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋‹ฌ๋ ธ์„ ๋•Œ

python3 -m venv ~/.local

๊ทธ๋Ÿฐ ๋‹ค์Œ ์šฐ๋ถ„ํˆฌ ๋กœ๊ทธ์ธ ์…ธ์—์„œ(#!/bin/bash -l) .local/bin์ด ๊ฒฝ๋กœ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค(๊ทธ๋ž˜์„œ python3์„ ํ˜ธ์ถœํ•˜๋ฉด ์ด์ œ .local/bin/python3 ์‹คํ–‰ ํŒŒ์ผ์ด ํ˜ธ์ถœ๋จ).
python3 -m venv ~/.local์„ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๋˜๋Š” ๋กœ๊ทธ์ธ ์…ธ์—์„œ ๋‚ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜ ๋˜๋Š” ๋‘˜ ๋ชจ๋‘๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

#fresh ubuntu docker
root<strong i="13">@7d8107816f64</strong>:/# python3 -m pip install  --user --upgrade pip
Successfully installed pip-20.0.1
root<strong i="14">@7d8107816f64</strong>:/# python3 -m pip --version
pip 20.0.1 from /root/.local/lib/python3.6/site-packages/pip (python 3.6)
root<strong i="15">@7d8107816f64</strong>:/# ls root/.local/bin/pip
pip     pip3    pip3.6
#Now we populate ~/.local/bin/
root<strong i="16">@7d8107816f64</strong>:/# python3 -m venv ~/.local
root<strong i="17">@7d8107816f64</strong>:/# ls root/.local/bin/
activate          activate.fish     easy_install-3.6  pip3              python
activate.csh      easy_install      pip               pip3.6            python3
root<strong i="18">@7d8107816f64</strong>:/# ./root/.local/bin/python --version
Python 3.6.9
root<strong i="19">@7d8107816f64</strong>:/# ./root/.local/bin/python -m pip install  --user --upgrade pip
ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

๋”ฐ๋ผ์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ .local/bin/python์„ ์‹คํ–‰ํ•˜๋ฉด --user๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pip install์„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค, ๋‹น์‹ ์ด python3 -m venv ~/.local ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค. ~/.local ๋Š” --user ์„ค์น˜(Linux์—์„œ)์˜ ์ ‘๋‘์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— pip์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ํ˜ผ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. venvs์™€ --user ๋Š” ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ _๋‹ค๋ฅธ_ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ~/.local ์—์„œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๋ฉด ๋‘˜์˜ ์ด์ƒํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ๋™์ž‘์€ ์•„๋งˆ๋„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํŽธ๋ฆฌํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ '์‚ฌ์šฉ์ž' ์„ค์น˜๋Š” ์›น ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ €์—๊ฒŒ ์•ฝ๊ฐ„์˜ ์Šฌํ””์„ ์•ˆ๊ฒจ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ข…์ข… ํ”„๋กœ๋•์…˜ ๋จธ์‹ ์— ๋ฐฐํฌ๋  ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ค€๋น„ํ•ด์•ผ ํ•˜๊ณ , ๋‚ด ์‚ฌ์šฉ์ž ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ์šฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ pip ๋Š” ๋‚ด๊ฐ€ ์ค€๋น„ํ•˜๊ณ  ์žˆ๋Š” virtualenv์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ  ์—ฌ์ „ํžˆ ์„ฑ๊ณต์œผ๋กœ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค . ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋Š” ์•Œ๋ฆผ์€ virtualenv๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ ์ถœ๋ ฅ 30~40ํŽ˜์ด์ง€ ์•ˆ์— ๋ฌปํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” virtualenv๊ฐ€ ๋ฐฐํฌ๋˜๋ฉด ๋‚ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒจํ‚ค์ง€๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ”„๋กœ๋•์…˜ ์›น ์•ฑ์—์„œ ์ผ๋ถ€ ์ž„์˜ ํŒจํ‚ค์ง€๊ฐ€ ๋ˆ„๋ฝ๋˜์–ด ์ฃฝ์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ๋ก€๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์„ ๊ธฐ๊บผ์ด ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์„ฑ ๊ด€์ ์—์„œ ์—ฌ์ „ํžˆ ์ข‹์€ ์•„์ด๋””์–ด์˜€์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒช์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šคํฌ๋ฆฝํŠธ ๋“ฑ์˜ ๋ชจ๋“  pip install ๋ช…๋ น์ค„์— --force-reinstall ์ถ”๊ฐ€
  • ~/.local/lib/python* ~/.pip/pip.conf ๋ฅผ ํŽธ์ง‘ํ•˜์—ฌ global ์„น์…˜์— user = no $๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
[global]
user = no
  • ~/.local/lib ๋ฅผ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋” ๊ณผ๊ฐํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด, ์‚ฌ๋ž‘ํ•˜๋Š” ํฌ์žฅ ๊ด€๋ฆฌ์ž ์—ฌ๋Ÿฌ๋ถ„, ๋ชจ๋“  ์ผ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์˜ ๋ฌผ๊ฑด์„ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋ฌด์—‡์ด๋“  ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ƒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ์–ด์จŒ๋“  ์œ„์กฐํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์‹ค์ œ๋กœ ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ์šฐ๋ฆฌ๋ฅผ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์•„, ์‚ฌ์šฉ์ž ์„ค์น˜๋Š” ๋™์ผํ•œ ์‚ฌ์šฉ์ž ๊ณ„์ •์œผ๋กœ ๋งŽ์€ ๋‹ค๋ฅธ ํ•ญ๋ชฉ์ด ์‹คํ–‰๋˜์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋นŒ๋“œ๊ฐ€ ์„œ๋กœ ๊ฒฉ๋ฆฌ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ์ง€์†์ ์ธ ํ†ตํ•ฉ ํ™˜๊ฒฝ์—์„œ ํฐ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ~/.local ๋ฅผ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งŒ๋“ค์–ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ ์œ„์˜ ์†”๋ฃจ์…˜๋„ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์˜ต์…˜์œผ๋กœ virtualenv๋ฅผ ๋งŒ๋“ค๋ฉด ๊ฒฉ๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๋˜๋Š” ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋ฅผ ๋ณผ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ pip๋Š” ํ•ด๋‹น ํ™˜๊ฒฝ์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€์—์„œ๋งŒ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •ํ™•ํžˆ ๋‹น์‹ ์ด ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ œ์˜ ์ข…๋ฅ˜ ๋•Œ๋ฌธ์— ๋ช‡ ๋…„ ์ „์— ๊ธฐ๋ณธ๊ฐ’์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

--system-site-packages ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ virtualenvs๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ(๋˜๋Š” ์ด๊ฒƒ์ด ๊ธฐ๋ณธ๊ฐ’์ธ ๋งค์šฐ ์˜ค๋ž˜๋œ ๋ฒ„์ „์˜ virtualenv), ์‹œ์Šคํ…œ ์ „์ฒด์™€ ๊ฐ€์ •์—์„œ ์„ค์น˜ํ–ˆ์„ ํŒจํ‚ค์ง€์˜ ์˜ค๋ฒ„๋ ˆ์ด ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ. ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€๋Š” ํ‘œ์‹œํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ํŒจํ‚ค์ง€๋Š” ํ‘œ์‹œํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด -s ์˜ต์…˜ ๋˜๋Š” PYTHONNOUSERSITE ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Python์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค! ์ •๋ง ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์™„์ „ํžˆ ์˜ณ์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์กฐ์ง์˜ ์ด์ƒํ•œ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€ ์ •์ฑ…์ด ๋‹ค์‹œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์„ ์ง€์ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์—†์–ด์š”. ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€๋Š” ๋ช‡ ๋…„ ์ „ numpy์™€ ๊ฐ™์€ ์ž‘์—…์„ ์œ„ํ•ด ์‹œ์Šคํ…œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์— ์ž์ฃผ ์˜์กดํ–ˆ์„ ๋•Œ ๋” ์ผ๋ฐ˜์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ •์ฑ…์„ ๋‹ค์‹œ ์‚ดํŽด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ค๋Š˜๋‚ ์—๋„ ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ•ฉ๋ฆฌ์ ์ธ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/pypa/pip/issues/1668#issuecomment -544569965์— ๋”ฐ๋ผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

@takluyver ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ^>^

@takluyver ์˜ค๋žซ๋™์•ˆ ์ €๋ฅผ ๊ดด๋กญํ˜”๋˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
๊ทธ๋Ÿฌ๋‚˜ ๊ถŒํ•œ์ด ์—†๋Š” ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ pip 20.0.2๊ฐ€ ํฌํ•จ๋œ Windows 10 python 3.8.2๊ฐ€ ์—ฌ์ „ํžˆ ์‹คํŒจํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

ERROR: Exception:
Traceback (most recent call last):
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\cli\base_command.py", line 186, in _main
    status = self.run(options, args)
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\commands\install.py", line 253, in run
    options.use_user_site = decide_user_install(
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\commands\install.py", line 604, in decide_user_install
    if site_packages_writable(root=root_path, isolated=isolated_mode):
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\commands\install.py", line 548, in site_packages_writable
    return all(
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\commands\install.py", line 549, in <genexpr>
    test_writable_dir(d) for d in set(get_lib_location_guesses(**kwargs))
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\utils\filesystem.py", line 140, in test_writable_dir
    return _test_writable_dir_win(path)
  File "c:\program files (x86)\python38-32\lib\site-packages\pip\_internal\utils\filesystem.py", line 153, in _test_writable_dir_win
    fd = os.open(file, os.O_RDWR | os.O_CREAT | os.O_EXCL)
PermissionError: [Errno 13] Permission denied: 'c:\\program files (x86)\\python38-32\\Lib\\site-packages\\accesstest_deleteme_fishfingers_custard_m59lch'

๋‚˜๋Š” ์ด๊ฒƒ์ด OSError ์˜ errno ๊ฐ€ errno.EACCES ์ด์ง€๋งŒ errno.EPERM ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@catPill ์ œ๋Œ€๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ด์–ด ์ฃผ์„ธ์š”. ๋‚ด๊ฐ€ Windows์—์„œ ๋ญ”๊ฐ€๋ฅผ ๋†“์ณค๋‹ค๋Š” ๊ฒƒ์€ ์™„์ „ํžˆ ๊ทธ๋Ÿด๋“ฏํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰