Virtualenv: virtualenv ๋ฃจํŠธ ๊ฒฝ๋กœ์˜ ๊ณต๋ฐฑ์œผ๋กœ ์ธํ•ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ค‘๋‹จ๋จ

์— ๋งŒ๋“  2011๋…„ 03์›” 14์ผ  ยท  59์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/virtualenv

์ด๊ฒƒ์ด ๋ฐฐํฌ / setuptools / virtualenv์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ,

virtualenv๋ฅผ ์„ค์น˜ํ•˜๋ฉด

/ var / lib / hudson / home / jobs / Minification WebHelpers / workspace / python / 2.4

๊ทธ๋Ÿฐ ๋‹ค์Œ ./bin/easy_install์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

bash : ./bin/easy_install : "/ var / lib / hudson / home / jobs / Minification : ์ž˜๋ชป๋œ ์ธํ„ฐํ”„๋ฆฌํ„ฐ : ํ•ด๋‹น ํŒŒ์ผ ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ์—†์Œ

๊ฒฝ๋กœ ์ด๋ฆ„์˜ ๊ณต๋ฐฑ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋”ฐ๋ฅด์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.


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

@JLDH ๋ฐ @gandie ์—์„œ ํ™•์ธ ํ•œ๋Œ€๋กœ์ด ๋ฌธ์ œ๋Š” ์ด์ œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ pip ๋ฐ virtualenv๋Š” virtualenv์˜ ๋ฃจํŠธ์— ๊ณต๋ฐฑ์ด์žˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฑฐ ๋‹ซ์•„! ๊ธฐ๋ณธ ์ˆ˜์ • @vsajip์— ๋Œ€ํ•œ ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

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

+1, Mac OS X 10.7.3 ๋ฐ Python 2.7.1์—์„œ ํ™•์ธ

์ข€ ์งœ์ฆ๋‚˜๊ณ , ์ˆ˜์ •ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋ฆ„์— ๊ณต๋ฐฑ์ด์žˆ๋Š” virtualenv๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ (# 278 ์ฐธ์กฐ), ๋‚˜์ค‘์— easy_install๊ณผ pip๊ฐ€ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌ๋ฉ๋‹ˆ๋‹ค.

% virtualenv "foo bar"
New python executable in foo bar/bin/python
Installing setuptools............done.
Installing pip...............done.
% ./foo\ bar/bin/easy_install nose
zsh: ./foo bar/bin/easy_install: bad interpreter: "/tmp/cfl/foo: no such file or directory
127 % ./foo\ bar/bin/pip install nose 
zsh: ./foo bar/bin/pip: bad interpreter: "/tmp/cfl/foo: no such file or directory

๋‚˜๋Š” ๋˜ํ•œ ์ด๊ฒƒ์ด OS X (์—ฌ๊ธฐ 10.8)์˜ ๋ฌธ์ œ์ž„์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. VIRTUAL_ENV ๋ณ€์ˆ˜์™€ bin์˜ shebangs๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒˆ๋กœ์šด env๋Š” ๊ฒฝ๋กœ์˜ ๋ชจ๋“  ๊ณต๊ฐ„์—์„œ ์งˆ์‹ํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํŒ… ๋“œ๋ผ์ด๋ธŒ์˜ ์ด๋ฆ„์ด ์ผ๋ฐ˜์ ์œผ๋กœ "Macintosh HD"์ด๋ฏ€๋กœ ๋ชจ๋“  ๊ฒฝ๋กœ๊ฐ€ "/ Volumes / Macintosh HD ..."๋กœ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ OS X์˜ ํฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•ดํ‚น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋นˆ / ํ™œ์„ฑํ™” :

VIRTUAL_ENV='/Volumes/Macintosh\ HD/path/to/my/project'

bin / pip ๋ฐ bin / easy_install :

#!"/Volumes/Macintosh\ HD/path/to/my/project/venv/bin/python"

๊ฒฝ๋กœ์˜ ๊ณต๊ฐ„์„ ํƒˆ์ถœ ํ•œ ํ›„ ํ•์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์™œ ์ด๊ฒƒ์ด ๋‹ซํ˜”์Šต๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ ๋งค์šฐ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚ด ์‹ค์ˆ˜๋ฅผ ์ˆ˜์ • ํ•ด๋„ ์•„์ง ์—ด๋ ค์žˆ์–ด

์ด ๋ฌธ์ œ๋Š” ์—ฌ์ „ํžˆ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์‹ถ์€ (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ณต๋ฐฑ์ด์žˆ๋Š”) ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“œ๋Š”์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

Mac ๋•Œ๋ฌธ์— ๋‚˜๋„ ์ด๊ฒƒ์„๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ์˜ shebang ์ค„์„! # / usr / bin / env python ๋ฐ ๋ชจ๋“  ์ž‘์—…์œผ๋กœ ์ˆ˜๋™ ํŽธ์ง‘ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด๊ฒƒ์€ ๊ฐ๊ฐ์˜ ์ƒˆ๋กœ์šด env์™€ env์— ์„ค์น˜๋œ ์ถ”๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ˆ˜ํ–‰๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๊ณต๊ฐ„์„ ์ด์Šค์ผ€์ดํ”„ํ•˜๊ฑฐ๋‚˜ is_darwin ์ธ ๊ฒฝ์šฐ / usr / bin / env๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ์—์„œ ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฐ์˜ ๋ฉ์ฒญ์ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ํ‹€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ Mac๋งŒ์„์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ์ ์œผ๋กœ * nix ์‹œ์Šคํ…œ์˜ ์‚ฌ์–‘ / ๋™์ž‘์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

shebang ์ค„์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜์—๋Š” ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ (๋Œ€์‹  ๋ณ„๋„์˜ ์ธ์ˆ˜๋กœ ๋ฐ”๋€œ) ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์Šค์ผ€์ดํ”„ / ๋”ฐ์˜ดํ‘œ๋„ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00053.html

๋‚˜๋Š” ์•„๋‚˜์ฝ˜๋‹ค์—์„œ๋„์ด ๋ฌธ์ œ์— ๋ถ€๋”ชํ˜”๋‹ค. ๋“œ๋ผ์ด๋ธŒ ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Mac์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

# 611์— ์˜ํ•ด ์ˆ˜์ • ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์˜ ํšจ๋Šฅ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ˆ๋ฌด ์งœ์ฆ๋‚˜๊ฒŒ, ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

@Ivoz๊ฐ€ ๊ฒŒ์‹œ ํ•œ ๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ Unix ์ œํ•œ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. # 611์€ shebang ์ค„์—์„œ ๋ฐฑ ์Šฌ๋ž˜์‹œ ์ด์Šค์ผ€์ดํ”„๋ฅผ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ถ€ Unix ๋ณ€ํ˜•์—์„œ ์ž‘๋™ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์–ด๋–ค ๋ฒ„์ „์ด ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์ฝ”๋“œ๋Š” ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ๋งน๋ชฉ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค ...)

์ด๊ฒƒ์ด ์œ ๋‹‰์Šค๊ฐ€ shebang ๋ผ์ธ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์˜ ๊ฒฐ๊ณผ๋ผ๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ, # 611์ด ์ผ๋ถ€ ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ๋ฅผ ์•…ํ™”์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด ์—ฌ์ „ํžˆ ๊ฐœ์„ ์ด ๋ ๊นŒ์š”?

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

๊ทธ๋Ÿด ์ˆ˜ ์žˆ์ง€. # 611์€ ์•„๋งˆ๋„ ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ณ  ํ”„๋ฆฐ์ง€ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋” ๋‚˜์œ ๊ฒƒ์€ Windows์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๋กœ ๊ธฐ๋ณธ Jenkins ๊ฒฝ๋กœ์—์„œ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.
์น˜๋ช…์  : Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ฒฝ๋กœ์— ๊ณต๋ฐฑ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. C : Program Files (x86) Jenkinsshiningpandajobsc3418983virtualenvsd41d8cd9

์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. StackOverflow ์—์„œ ์ฐพ์€ ์ง€์นจ #!/usr/bin/env python ์„ค์ •ํ•˜์—ฌ pip ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜์ด ์†”๋ฃจ์…˜์ด ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค Python์ด ์‹คํ–‰ ๋ ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์„ค์น˜๋œ ์Šคํฌ๋ฆฝํŠธ์˜ shebang์„ "env python"์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ํ™œ์„ฑํ™” ๋œ virtualenv์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ช…์‹œ ์  ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ƒ์„ฑ๋˜์–ด ํ•ญ์ƒ venv์—์„œ Python์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์Šคํฌ๋ฆฝํŠธ์— ํ•„์š”ํ•œ ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ œ์•ˆ์€ ๋ˆ„๊ตฐ๊ฐ€ (์•„๋งˆ๋„์ด โ€‹โ€‹๋ฌธ์ œ์˜ ์˜ํ–ฅ์„๋ฐ›๋Š” ์‚ฌ๋žŒ์ด์ง€๋งŒ ์ตœ์†Œํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด์žˆ๋Š” ํ”Œ๋žซํผ์˜ ๋ˆ„๊ตฐ๊ฐ€)์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ผ์ธ์„ ๋”ฐ๋ผ ํ™•์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ํ’€ ์š”์ฒญ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๊ฒฝ๋กœ ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด
  • ์šฐ๋ฆฌ๋Š” ํ”Œ๋žซํผ XXX์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ณต๋ฐฑ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ด์Šค์ผ€์ดํ”„์™€ ํ•จ๊ป˜ shebang ์ค„์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.
  • ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ ๋™์ž‘์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํ”Œ๋žซํผ ํ™•์ธ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด ์ดํ•ด ๋‹น์‚ฌ์ž๊ฐ€ ์ถ”๊ฐ€๋กœ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

  1. ์—ฌ๊ธฐ์„œ ๋…ผ์˜๋Š” ํฐ ๋”ฐ์˜ดํ‘œ๊ฐ€ OSX์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•˜์ง€๋งŒ ์ •ํ™•ํ•œ OSX ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š”๊ฐ€?
  2. # 611์—์„œ ๋ฐฑ ์Šฌ๋ž˜์‹œ๊ฐ€์žˆ๋Š” ์ด์Šค์ผ€์ดํ”„ ๊ณต๋ฐฑ์ด ์‚ฌ์šฉ๋˜์—ˆ์ง€๋งŒ ์–ด๋–ค OS์ธ์ง€์— ๋Œ€ํ•œ ํ™•์ธ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค (Linux? ํŠน์ • ์ปค๋„ ๋ฒ„์ „? ํŠน์ • ๋ฐฐํฌํŒ?).

์ด๋Ÿฌํ•œ ํ”Œ๋žซํผ ๋ณ„ ๋ณ€ํ˜•์€ /usr/bin/env ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. @merwok์ด ์ง€์ ํ–ˆ๋“ฏ์ด, ๊ทธ ๊ฒฐ๊ณผ ํ–‰๋™์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. shebang์€ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” _without_ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜๋„์ ์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋™์ž‘์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์œ ์šฉ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ•ด๋‹น ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š์„ ๋•Œ ํ”Œ๋žซํผ XXX์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

@pfmoore ๋‚ด๊ฐ€ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ตœ๊ทผ์—์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ Linux Mint 18์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Virtualenv์— ๊ธฐ์—ฌํ•œ ์ ์ด ์—†์ง€๋งŒ ํ˜„์žฌ Python Brasil์— ์žˆ์œผ๋ฉฐ ์Šคํ”„๋ฆฐํŠธ ์ „์šฉ ํ•˜๋ฃจ๋ฅผ ๋ณด๋‚ผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์‹œ๋„!

https://lists.gnu.org/archive/html/bug-bash/2008-05/msg00052.html ์— ๋”ฐ๋ฅด๋ฉด ๋ฐฑ ์Šฌ๋ž˜์‹œ ๋˜๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ์ด์Šค์ผ€์ดํ”„ํ•˜๋Š” ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹คํ—˜์ ์œผ๋กœ ๋ฐฑ ์Šฌ๋ž˜์‹œ ๋‚˜ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์Šค์ผ€์ดํ”„๊ฐ€ OSX 10.11.6์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

virtualenv๋Š” ์ปค๋„์— ์˜์กดํ•˜๋Š” shebangs๋ฅผ ๋ฉ€๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Linux, XNU (macOS ์ปค๋„), FreeBSD, OpenBSD ๋ฐ NetBSD ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ๋ˆ„๊ตฌ๋„ shebang์˜ ๊ณต๊ฐ„์„ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์—†์Šต๋‹ˆ๋‹ค.

์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

Python 3์˜ ์ƒˆ๋กœ์šด venv์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํŒจ์น˜๋ฅผ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” virtualenv์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ @vsajip์— ์˜ํ•ด ๊ฑฐ๋ถ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค : http://bugs.python.org/issue28446. ์‹ค์ œ๋กœ ๊ทธ๊ฒƒ์€ ํŒŒ์ด์ฌ์˜ ์ž˜๋ชป์ด ์•„๋‹ˆ๋ผ ์šด์˜ ์ฒด์ œ์˜ ์ž˜๋ชป์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋กœ ์˜ˆ์ƒ๋Œ€๋กœ ๋ณด์ด๋Š” Windows์˜ ๋™์ž‘์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

```C : UsersVinay> python34python -m venv "Tempaaa bbb"

C : UsersVinay> "Tempaaa bbbScriptspip"--version
C : Tempaaa bbblibsite-packages (python 3.4)์˜ pip 6.0.8

C : UsersVinay> pyzzer -i "Tempaaa bbbScriptspip.exe"
๋ฐœ์‚ฌ๊ธฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
Shebang : #! "C : Tempaaa bbbScriptspython.exe"

์•„์นด์ด๋ธŒ ๋‚ด์šฉ :
__main__.py

C : UsersVinay> "Tempaaa bbbScriptspython"-m pip install -U pip
pip ๋ฒ„์ „ 6.0.8์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ฒ„์ „ 9.0.1์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
'pip install --upgrade pip'๋ช…๋ น์„ ํ†ตํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
https://pypi.python.org/ ์—์„œ pip ์ˆ˜์ง‘ [...] / pip-9.0.1-py2.py3-none-any.whl # md5 = 297 [...]
์บ์‹œ ๋œ pip-9.0.1-py2.py3-none-any.whl ์‚ฌ์šฉ
์ˆ˜์ง‘ ๋œ ํŒจํ‚ค์ง€ ์„ค์น˜ : pip
๊ธฐ์กด ์„ค์น˜ ๋ฐœ๊ฒฌ : pip 6.0.8
pip-6.0.8 ์ œ๊ฑฐ :
pip-6.0.8์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

pip-9.0.1์„ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

C : UsersVinay> "Tempaaa bbbScriptspip"--version
C : Tempaaa bbblibsite-packages (python 3.4)์˜ pip 9.0.1
```

Windows์˜ virtualenv ์Šคํฌ๋ฆฝํŠธ๋Š” distlib๊ฐ€ PC / launcher.c์—์„œ ์ž์ฒด shebang ํ”„๋กœํ† ์ฝœ์„ ์ •์˜ํ•˜๋ฏ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ POSIX๋Š” ์‹ ๋ขฐํ•  ์ˆ˜์—†๋Š” ์ปค๋„ ๋Œ€์‹  ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ shebang ํŒŒ์„œ์™€ ๋น„์Šทํ•œ ๊ฒƒ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ ๋ขฐํ•  ์ˆ˜์—†๋Š” ์ปค๋„ ๋Œ€์‹  ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ shebang ํŒŒ์„œ

์™œ Bash๊ฐ€ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์—†๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด) ์ปค๋„ ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Shebang์€ ์‰˜ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋„ ๊ณต๊ฐ„์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ:
UNIX ๊ณ„์—ด ์‹œ์Šคํ…œ (Linux, Mac, * BSD, ...)์—์„œ๋Š” fork () ๋ฐ exec ()๋ฅผ ํ†ตํ•ด ์ƒˆ ํ”„๋กœ๊ทธ๋žจ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. exec ()๋Š” ์ƒˆ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” Windows์˜ CreateProcess ()์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. UNIX ๊ณ„์—ด ์‹œ์Šคํ…œ์—์„œ exec ()๋Š” ๊ฒฐ๊ตญ ์‹œ์Šคํ…œ ํ˜ธ์ถœ execve ()๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ธฐ๋Šฅ์€ ์ปค๋„์—์„œ ๊ตฌํ˜„๋˜๋ฏ€๋กœ shebang ๊ตฌ๋ฌธ ๋ถ„์„์€ ์ปค๋„์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ •์  ์—ฐ๊ฒฐ๋œ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ (int 80 ๋˜๋Š” sysenter ๋“ฑ์„ ํ†ตํ•ด)์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒฝ๋กœ์— ๊ณต๋ฐฑ์ด์žˆ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ์ƒ์„ฑ์„ ๊ธˆ์ง€ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

Shebang์€ ์‰˜ ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปค๋„ ๊ณต๊ฐ„์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ,ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ENOEXEC ๋ฐ˜ํ™˜ํ•˜๋ฉด ์‰˜์ด ์ž์ฒด์ ์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฒŒ๋ ˆ์˜ ์บ”์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ...

ํฅ๋ฏธ๋กœ์šด ์ •๋ณด-Linux์˜ ์ปค๋„ ๊ธฐ๋Šฅ์€ ์˜ค๋žœ Python ์ปค๋ฏธํ„ฐ Martin von Lรถwis๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. :-)

์ด ํŽ˜์ด์ง€๋Š” ๋˜ํ•œ ํฅ๋ฏธ๋กœ์šด ์ฝ๊ธฐ์˜€์Šต๋‹ˆ๋‹ค : http://www.in-ulm.de/~mascheck/various/shebang/

์˜ˆ,ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ENOEXEC ๋ฐ˜ํ™˜ํ•˜๋ฉด ์‰˜์ด ์ž์ฒด์ ์œผ๋กœ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

์‰˜๊ณผ ๊ธฐ๋ณธ ์ปค๋„ ์‚ฌ์ด์˜ IMO ๋‹ค๋ฅธ ์˜๋ฏธ๋Š” ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งŽ์€ ํ˜ผ๋ž€์„ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์ตœ์†Œํ•œ bash ๋ฐ zsh๋Š” execve ()๊ฐ€ ์‹คํŒจ ํ•  ๋•Œ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋” ๋‚˜์€ ์˜ค๋ฅ˜๋ณด๊ณ ๋ฅผ ์œ„ํ•ด์„œ๋งŒ ํด๋ฐฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํฅ๋ฏธ๋กœ์šด ์ •๋ณด-Linux์˜ ์ปค๋„ ๊ธฐ๋Šฅ์€ ์˜ค๋žœ Python ์ปค๋ฏธํ„ฐ Martin von Lรถwis๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. :-)

ํฅ๋ฏธ ๋กญ๊ตฐ์š”! ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋ˆˆ์น˜ ์ฑ„์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค :) ๋˜ํ•œ ์ถ”๊ฐ€ ์ž๋ฃŒ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ปค๋„ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฌธ์„œ๋Š” ์—ฌ์ „ํžˆ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

@fbidu ์˜ ์•„์ด๋””์–ด์— ๋Œ€ํ•ด :

๊ฒฝ๋กœ์— ๊ณต๋ฐฑ์ด์žˆ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ ์ƒ์„ฑ์„ ๊ธˆ์ง€ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

์ทจ์•ฝํ•œ ๊ฒฝ๋กœ๊ฐ€์žˆ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๊ฒฝ๋กœ ์ฒ˜๋ฆฌ์˜ ์ฝ”๋„ˆ ์ผ€์ด์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์ปค๋„์ด ์–ด๋–ป๊ฒŒ ์†์ƒ๋˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์€ ๋‚ด๊ฐ€ http://bugs.python.org/issue28446์— ๊ฒŒ์‹œ ํ•œ ํŒจ์น˜์ฒ˜๋Ÿผ ๊ธˆ์ง€ํ•˜๋Š” ๋Œ€์‹  ๊ฒฝ๊ณ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

# 994 "Pip์ด virtualenv ๊ฒฝ๋กœ์˜ ๊ณต๊ฐ„์œผ๋กœ ์‹คํŒจ"ํ•˜๋Š” ๊ฒƒ์ด์ด ๋ฌธ์ œ์˜ ์ค‘๋ณต์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://github.com/pypa/virtualenv/issues/997#issuecomment -270681253์˜ "virtualenv๊ฐ€ ๊นจ์ง€๊ธฐ ์‰ฌ์šด ์ปค๋„ shebang ๊ตฌ๋ฌธ ๋ถ„์„์œผ๋กœ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค."์˜ ์ฃผ์„์„ ๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ์ •์‹ ์—์„œ # 1014 "๊ฒฝ๋กœ์— ์ด๋ชจํ‹ฐ์ฝ˜์ด์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ"์€ ์ทจ์•ฝํ•œ ์ปค๋„ shebang ๊ตฌ๋ฌธ ๋ถ„์„์œผ๋กœ ์ธํ•ด virtualenv๊ฐ€ ์†์ƒ๋˜๋Š” ๋˜ ๋‹ค๋ฅธ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ๊ฒฝ๋กœ์— ASCII๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊นจ์ง€๊ธฐ ์‰ฌ์šด ์ปค๋„ shebang ๊ตฌ๋ฌธ ๋ถ„์„์˜ ์„ธ ๊ฐ€์ง€ ์ธก๋ฉด์„ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋กœ ์ˆ˜์ง‘ํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ˆ˜์ •์ด virtualenv ๊ฒฝ๋กœ์—์„œ ๊ณต๋ฐฑ, ๊ธธ์ด ๋ฐ ๋น„ ASCII ๋ฌธ์ž๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋Š”์ง€ ํ™•์‹  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ • ์ž‘์—…์„ํ•˜๋Š” ๋™์•ˆ a) ๊ณต๋ฐฑ์ด ์žˆ๊ฑฐ๋‚˜ b) ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ c) ๋น„ ASCII ๋ฌธ์ž๊ฐ€์žˆ๋Š” ๊ฒฝ๋กœ์— ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๋•Œ virtualenv๊ฐ€ ๊ฒฝ๊ณ ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฌธ์„œ์˜ ๋ฌธ์žฅ๋„ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค ๊ฒฝ๋กœ์— ASCII๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

# 1014์˜ ์ด์œ ๋Š” ์ปค๋„์ด ์•„๋‹Œ virtualenv์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. # 900์—์„œ ๋งค์šฐ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ํŒจ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด๊ฒƒ์€ ๋งค์šฐ ์„ฑ ๊ฐ€์‹œ๊ณ  ๊ฒ‰๋ณด๊ธฐ์— ๋„ˆ๋ฌด๋‚˜ ๋‹จ์ˆœํ•œ ๊ฒƒ (์ ์–ด๋„ ๋‹จ์ˆœํ•œ ์›์ธ)์œผ๋กœ ์ธํ•ด ์—„์ฒญ๋‚œ ์‹œ๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค.

์ด๋ฆ„์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ (๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ) ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ (๊ณต๋ฐฑ์—†์ด /virtualenvs/python3.5์™€ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ์›๋ž˜ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์†Œํ”„ํŠธ ๋งํฌ๊ฐ€๋˜๊ฒŒํ• ๊นŒ์š”?).

๊ณต๊ฐ„์—†์ด /virtualenvs/python3.5์™€ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ virtualenvwrapper๋Š” ๋งค์šฐ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒ‰๋ณด๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋‹จ์ˆœ ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค (์ ์–ด๋„ ๋‹จ์ˆœํ•œ ์›์ธ).

๋‘˜ ๋‹ค ๊ฐ„๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›์ธ์€ ์ปค๋„ ๊ตฌ๋ฌธ ๋ถ„์„ ์ฝ”๋“œ์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์—๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

6 ๋…„ ํ›„์—๋„ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ๋Š” 2 ์ฃผ ์ „์— ๋‚˜๋ฅผ ๊ดด๋กญ ํ˜”์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์—ฌ์ „ํžˆ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

virtualenv ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ Unix ๋ฌธ์ œ์ด๋ฏ€๋กœ Unix ์ปค๋„ ์ œํ•œ์ด ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š” ํ•œ "์ˆ˜์ •"๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ virtualenv ๋ฒ„๊ทธ๋Š” virtualenv๊ฐ€ ์ผ์ƒ์ ์œผ๋กœ virtualenv ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํŠน์ • Unix ์ปค๋„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‰˜ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Virtualenv๋Š” ์‰˜ ์‹คํ–‰ ํŒŒ์ผ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ virtualenv ๋ฒ„๊ทธ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ virtualenv๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (ASCII ์ „์šฉ ๋ฌธ์ž๊ฐ€ ์žˆ๊ณ  ๊ณต๋ฐฑ์ด์—†๋Š” ์งง์€ ๊ฒฝ๋กœ์—์„œ๋งŒ virtualenv๋ฅผ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค). ์„ธ ๋ฒˆ์งธ virtualenv ๋ฒ„๊ทธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋ฒ„๊ทธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” virtualenv ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๊ณ  ์œ ์šฉํ•œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. virtualenv ๊ธฐ์—ฌ์ž๊ฐ€ ์ƒํ™ฉ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ์ผ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@JDLH ์ฒซ ๋ฒˆ์งธ "๋ฒ„๊ทธ"์— ๋Œ€ํ•ด : virtualenv๊ฐ€ ์•„๋‹ˆ๋ผ distlib์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ  https://bitbucket.org/pypa/distlib/pull-requests/31/์— ๊ตฌํ˜„์ด

์ฒซ ๋ฒˆ์งธ virtualenv ๋ฒ„๊ทธ๋Š” virtualenv๊ฐ€ ํŠน์ • Unix ์ปค๋„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์‰˜ ์‹คํ–‰ ํŒŒ์ผ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ์„ ํƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@JDLH ์ด๊ฒƒ์€ virtualenv ์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.- _all_ Unix ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ (์ฆ‰, shebang ์ค„์ด์žˆ๋Š” ํŒŒ์ผ)์€์ด ์ปค๋„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.-๊ทธ๋ฆฌ๊ณ  virtualenv (๋˜๋Š” ๊ทธ ๋ฐ–์˜ ๋‹ค๋ฅธ ๊ฒƒ)์ด ์žฌ๋ฐœ ๋ช… ํ• ๋งŒํ•œ ์„ค๋“๋ ฅ์žˆ๋Š” ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์ž˜ ์ดํ•ด ๋  ๋•Œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์Šคํฌ๋ฆฝํŠธ ๋””์ŠคํŒจ์น˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๊ฒฝ๋กœ ( virtualenv ๊ด€๋ จ ์—†์Œ)์— ๊ณต๋ฐฑ์ด์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋ฉด ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

virtualenv ๊ธฐ์—ฌ์ž๊ฐ€ ์ƒํ™ฉ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ์ผ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

@ yan12125 distlib ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š”๋Œ€๋กœ shebang ์ค„์—์„œ ์‹คํ–‰ ํŒŒ์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต๋ฐฑ / ๊ธด ์ค„์— ๋Œ€ํ•œ ์ปค๋„ ์ œํ•œ์€ ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์œผ๋กœ ์ธํ•ด Linux ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. shebang ์‹คํ–‰ ํŒŒ์ผ (Mozilla ์Šคํฌ๋ฆฝํŠธ ํ•ดํ‚น์— ํ•ด๋‹นํ•˜๋Š” ์ผ๋ฐ˜ํ™”)์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฌธ์ž์—ด์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ distlib ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ์ž‘์„ฑํ•ด์•ผํ•˜๋ฏ€๋กœ distlib ์ฒ˜๋Ÿผ ์‹คํ—˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์ด๊ฒƒ์€ virtualenv์—๋งŒ ๊ตญํ•œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@vsajip ์ด๊ฒƒ์€ ์ง„์ •ํ•œ ์ง„์ˆ ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด๋Š” virtualenv๊ฐ€ ์„ ํƒํ•œ ๋™์ผํ•œ shebang ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ์ด ๋ฌธ์ œ์˜ ์š”์ ์„

virtualenv (๋˜๋Š” ๊ธฐํƒ€)๊ฐ€ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ์Šคํฌ๋ฆฝํŠธ ๋””์ŠคํŒจ์น˜ ๋ฐฉ๋ฒ•์„ ์žฌ์ฐฝ์กฐ ํ•  ์„ค๋“๋ ฅ์žˆ๋Š” ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

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

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

virtualenv๋ฅผ ์ž˜ ์•„๋Š” ์ถฉ์‹คํ•œ ์‚ฌ๋žŒ๋“ค์ด ์œ ๋งํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ œ์•ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. virtualenv ~/my\ long\ path\ with\ spaces ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์œ„์น˜๋Š” ์–ด๋””์ž…๋‹ˆ๊นŒ? ์ฒซ ๋ฒˆ์งธ ๊ธฐ์—ฌ๋ฅผํ•˜๋Š” ๋ฐฉ๋ฌธ์ž์˜ ์žฅ์• ๋ฌผ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ์‹คํ•œ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋Š” ๊ทธ๋Ÿฌํ•œ ํŒจ์น˜์— ๋Œ€ํ•œ ๋ช…๋ฐฑํ•˜์ง€ ์•Š์€ ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ถฉ์‹คํ•œ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๋Ÿฌํ•œ ํŒจ์น˜๋ฅผ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์—ญ์‚ฌ์ ์ธ ๋ฐ˜๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? (๋‚ด ๋ง์€, ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”๊ฐ€ ํ•  ์ƒ๊ฐ์„ ์ฒ˜์Œ์œผ๋กœ ์ƒ๊ฐํ•œ ์‚ฌ๋žŒ์ด ๋  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์•„์ง ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ์ด์œ ๊ฐ€์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

๊ณต๋ฐฑ์„ ํฌํ•จํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜์—†๋Š” ์ž˜ ์•Œ๋ ค์ง„ ๊ฒฝ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. /Users/iulian/Library/Mobile Documents/com~apple~CloudDocs . ๋”ฐ๋ผ์„œ iCloud์—์„œ virtualenv ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ์ผ๋ถ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์œ ์ง€ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜์ด ๋ฌธ์ œ์— ๋ถ€๋”ช ํž™๋‹ˆ๋‹ค.

virtualenv๋ฅผ ์ž˜ ์•„๋Š” ์ถฉ์‹คํ•œ ์‚ฌ๋žŒ๋“ค์ด ์œ ๋งํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ œ์•ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•œ ๊ฒƒ์— ๋Œ€ํ•œ ๋น„ํŒ์˜ ์–‘์„ ๊ฐ์•ˆํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„์ด ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ์˜ค๋žซ๋™์•ˆ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์ฑ„๋กœ ๋‘์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :-(

virtualenv ~ / my long path๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ์ž…๋ ฅํ•˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ์ข‹์€ ์œ„์น˜๋Š” ์–ด๋””์ž…๋‹ˆ๊นŒ?

์ธ์ˆ˜ ๊ตฌ๋ฌธ ๋ถ„์„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๊ฒฝ๋กœ๊ฐ€ ๊ฒฐ์ •๋˜๋ฉด ๊ฒ€์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๊ธฐ์—ฌ๋ฅผํ•˜๋Š” ๋ฐฉ๋ฌธ์ž์˜ ์žฅ์• ๋ฌผ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ถฉ์‹คํ•œ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ  ํ•  ์ˆ˜์žˆ๋Š” ๊ทธ๋Ÿฌํ•œ ํŒจ์น˜์— ๋Œ€ํ•œ ๋ช…๋ฐฑํ•˜์ง€ ์•Š์€ ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ์ด ๋ฌธ์ œ ๋ฐ ๊ธฐํƒ€ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ์ˆ˜๋…„๊ฐ„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋จผ์ € ๊ฒฝ๋กœ๊ฐ€ ์ž‘๋™ ํ•  ๋•Œ ๊ฒฝ๋กœ๋ฅผ ๊ฑฐ๋ถ€ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, OS์˜ ์ œํ•œ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๊ณผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹œ์Šคํ…œ๋งˆ๋‹ค ํฌ๊ฒŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Windows๋Š” ๊ณต๋ฐฑ๊ณผ ๊ธด ํŒŒ์ผ ์ด๋ฆ„์„ ํ—ˆ์šฉํ•˜๊ณ , ์ผ๋ถ€ Unix ์‹œ์Šคํ…œ์€ ๊ณต๋ฐฑ์„ ํ—ˆ์šฉํ•˜๊ณ , ์ผ๋ถ€๋Š” ์ธ์šฉ ํ•  ๊ณต๋ฐฑ์ด์žˆ๋Š” ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•˜๊ณ , ์ผ๋ถ€๋Š” ๋งค์šฐ ์งง์€ ๊ธธ์ด ์ œํ•œ (32 ์ž?), ์ผ๋ถ€๋Š” ๋” ๊ธธ๋‹ค. ... ๋งŽ์€ ์ œํ•œ ์‚ฌํ•ญ์ด ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๋งค์šฐ ์ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌ์ž๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฌธ์„œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•œ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถฉ์‹คํ•œ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๋Ÿฌํ•œ ํŒจ์น˜๋ฅผ ๋ฐ›์•„๋“ค์ด๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์—ญ์‚ฌ์ ์ธ ๋ฐ˜๋Œ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, "์ฒซ๋ˆˆ์— ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ๋งŒ ํผ ๊ฐ„๋‹จํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€ ๋ง๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ง€์›ํ•ด์•ผํ•˜๋Š” ๋‹ค์–‘ํ•œ (๋•Œ๋กœ๋Š” ๊ฝค ๋ชจํ˜ธํ•œ) ์‹œ์Šคํ…œ์„ ๋ชจ๋‘ ๋ฌด์‹œํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค".

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ์ฐŒ๋ฅด๊ณ  ์‹ถ์–ดํ•˜๊ณ -๋‚ด๊ฐ€ ๊ฐœ์ธ์ ์œผ๋กœ "์ฒซ ๋ฒˆ์งธ ๊ธฐ์—ฌ"๋กœ ์ถ”์ฒœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•œ๋‹ค๋ฉด, ๊ทธ๋“ค์€ ๋‹ค์–‘ํ•œ ์ด์Šˆ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์—ญ์‚ฌ๋ฅผ ์ฝ๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์ผ๋ถ€ ์ด๊ฒƒ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ์•„๋งˆ๋„ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€๋Š” ์•„๋งˆ๋„ pip ํŠธ๋ž˜์ปค์™€ ์–ด์ฉŒ๋ฉด distlib ๋˜๋Š” setuptools ํŠธ๋ž˜์ปค์—์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ OS์— ์˜ํ•ด ๋ถ€๊ณผ ๋œ ์ œ์•ฝ์„ ์ƒˆ๋กœ์šด PR์— ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค. "์ด๋Ÿฌํ•œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์œผ๋ฉด virtualenv์—์„œ ์‚ฌ์šฉํ•˜๋Š” shebang ํ—ค๋”๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ virtualenv๋Š” ๋ช…์‹œ๋œ ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ™˜๊ฒฝ ์ƒ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๋Š” ๋ฌธ์„œ ํŒจ์น˜๋กœ ์ œ์•ˆํ•˜์‹ญ์‹œ์˜ค. PR์—๋Š” ๋ฌธ์„œํ™” ๋œ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•˜๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํฌํ•จ๋˜๊ฑฐ๋‚˜ ํ–ฅํ›„ ์ž‘์—…์œผ๋กœ์ด๋ฅผ ์ œ์•ˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋‚ด๊ฐ€ ๊ธฐ์–ตํ•˜๋Š” ๋ฐ”์™€ ๊ฐ™์ด ์‹œ์Šคํ…œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ •ํ™•ํžˆ ์กฐ์‚ฌํ•˜์—ฌ ์ œํ•œ์ด ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "Ubuntu ํŒจ์น˜ ๋œ ์ปค๋„๋กœ "...). ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์ผ์ด ์‹คํŒจ ํ•  ๊ฒƒ์œผ๋กœ ์•Œ๋ ค์ง„ ๊ฒฝ์šฐ์—๋งŒ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์นจ๋ฌตํ•œ๋‹ค๋Š” ๊ฒฝ๊ณ ๋กœ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ์ด ๋‹จ๊ณ„์—์„œ๋Š” ๋ฌธ์„œ ์ „์šฉ ํŒจ์น˜๋กœ๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค๋ฃจ๋Š” ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šค ํ•  ์ˆ˜์žˆ๋Š” ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ํŒจ์น˜์— ๋Œ€ํ•œ ๊ฒ€ํ† ๋ฅผ ๋ฐ›์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž๋Š” FreeBSD, OpenBSD ๋˜๋Š” Solaris๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ์‹ค์ œ๋กœ ๋„์›€์„ ์ค„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ...

๋ถ€๋ถ„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ฌธ์„œ์™€ OSX์— ๋Œ€ํ•œ ๊ฒฝ๊ณ  ๋งŒ ์ถ”๊ฐ€ ํ•œ PR์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ (๊ฐ€์žฅ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹œ์Šคํ…œ์ด ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค) ์ถฉ๋ถ„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ OSX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ•ต์‹ฌ ๊ฐœ๋ฐœ์ž ์ค‘ ํ•œ ๋ช…์ด์ด๋ฅผ ๋ณ‘ํ•ฉํ•ด๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜๋‚˜์š”?

์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์ง€๋งŒ (์˜ˆ : bin/pip

#!/bin/sh
"/my/long path/with spaces/pythonx.y" "/path/to/my project/with spaces/venv/bin/real-pip" "$@"

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ˜„์žฌ pip ์Šคํฌ๋ฆฝํŠธ๋ฅผ real-pip ? ์™œ ์šฐ๋ฆฌ๊ฐ€ shebang์„ ์ง์ ‘ ์‚ฌ์šฉ ํ•ด์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@ raxod502 ๋‚˜๋Š” ์ด๊ฒƒ์ด Windows์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‘ ๋ฒˆ์งธ ์ค„์— ํ•„์š”ํ•œ "์ •์ƒ์ ์ธ"์ฃผ๋ฌธ์ด ๋‹น์‹ ์ด์ฃผ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๊ฐœ์ธ์ ์œผ๋กœ ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ). ์›น ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์ ์ ˆํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ์‹์œผ๋กœ " ๋˜๋Š” $ ๋ฌธ์ž๊ฐ€์žˆ๋Š” ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋Š” PR (์œ„์˜ ์˜๊ฒฌ์— ๋”ฐ๋ผ)์„ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ์ด์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ํ† ๋ก  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ๋œ Unix์—์„œ ์ž‘์—…ํ•˜๋Š” virtualenv ์ฝ”์–ด ์ปค๋ฏธํ„ฐ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ํ™•๋ณดํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Windows ์‚ฌ์šฉ์ž๋กœ์„œ ์ €๋Š” ์ด์™€ ๊ฐ™์€ Unix ๊ด€๋ จ PR์„ ๋ณ‘ํ•ฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฟก๋ฟก
@ raxod502 ๊ฐ€ ์ œ์•ˆํ•œ ์†”๋ฃจ์…˜์€ .bat ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ afaik?

@gst ์งง์€ ๋Œ€๋‹ต, ์•„๋‹ˆ์š”. ๊ธด ๋Œ€๋‹ต์€ http://paul-moores-notes.readthedocs.io/en/latest/wrappers.html์ž…๋‹ˆ๋‹ค . ์ˆ˜๋…„ ๋™์•ˆ์ด ์ ์— ๋Œ€ํ•ด ๋งŽ์€ ํ† ๋ก ์ด ์žˆ์—ˆ๊ณ  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ ์ œ์•ˆ ํ•  ๋•Œ๋งˆ๋‹ค exe ๋ž˜ํผ, ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ์ด ๋ฌธ์ œ๋Š” Windows์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋”ฐ๋ผ์„œ Windows ํ™˜๊ฒฝ์—์„œ ์•„๋ฌด๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณ€๊ฒฝ ์€ Unix๋กœ๋งŒ ์ œํ•œ

์ข‹์€ ๋Œ€๋‹ต์„ ์œ„ํ•ด thx :)

exe ๋ž˜ํผ ์™ธ์—๋Š” ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๊ทธ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์‚ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (ํ•„์š”ํ•˜๋‹ค๋ฉด).

๊ธด ๊ฒฝ๋กœ์™€ ๊ณต๋ฐฑ์ด์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด distlib ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. Harald Nordgren์˜ ํŒจ์น˜๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ (๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค-์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ŠคํŠธ๊ฐ€ ์—†์—ˆ ์Œ) ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค-์‹คํ–‰ ํŒŒ์ผ๋กœ '/ bin / sh'๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. pip / virtualenv ๊ด€๋ฆฌ์ž๋Š” ํ˜„์žฌ ๋ฒ„์ „์˜ distlib ์ €์žฅ์†Œ๋ฅผ ๋กœ์ปฌ๋กœ ๋ฒค๋” ๋ง ํ•œ ํ›„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pip์˜ ๊ฐœ๋ฐœ ๋ฒ„์ „์€ ์ด์ œ distlib์˜ ์ตœ์‹  ๋ฒ„์ „์„ ๊ณต๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, pip๋Š” ์ด์ œ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์˜ ๊ณต๋ฐฑ์„ ์ž˜ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ๋ฐ”์™€ ๊ฐ™์ด, pip์˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์™€ virtualenv ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์„ฑ ๋œ ๋ชจ๋“  ์ƒˆ๋กœ์šด virtualenv๋Š” pip์— ์˜ํ•ด ์„ค์น˜๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฒฝ๋กœ์˜ ๊ณต๊ฐ„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค (setuptools์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋ฐœํ•œ ๊ฒฝ์šฐ ์ œ์™ธ). 'pip์— ์˜ํ•ด ์ง์ ‘ ์„ค์น˜๋˜์ง€ ์•Š์€ ๋ž˜ํผ).

์ €๋Š” gvfs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์‚ผ๋ฐ” ๊ณต์œ ๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  gvfs์— ์˜ํ•ด ์ƒ์„ฑ ๋œ ๋งˆ์šดํŠธ ๊ฒฝ๋กœ์˜ ํŽ‘ํฌ๋กœ ์ธํ•ด virtualenv / pip ๋“ฑ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฝ๋กœ์—๋Š” ๊ณต๊ฐ„์ด ์—†์ง€๋งŒ virtualenv / pip ๋“ฑ์„ ๋ฌด๋ฆŽ์— ๊ฐ€์ ธ๊ฐ€๋Š” ๋‹ค๋ฅธ ๋งŽ์€ ๊ฒƒ๋“ค์ด

/run/user/1000/gvfs/smb-share:server=bolt,share=eng/projects/msp/mrfbus/land

๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ํ•œ ํ˜„์žฌ gvfs์—๋Š” ์ƒ์„ฑ ๋œ ๋งˆ์šดํŠธ ์ง€์ ์˜ ๊ฒฝ๋กœ์—์„œ ๊ตฌ๋‘์ ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์˜ต์…˜์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ์œ ์ผํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ gvfs ๋งˆ์šดํŠธ์— virtualenv๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@pradyunsg ๋‹ค์Œ pip ๋ฆด๋ฆฌ์Šค์— ๋Œ€ํ•œ ์ผ์ •์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋งˆ์ง€๋ง‰ ๊ฒƒ์€ 1 ๋…„์ด ๋„˜์—ˆ๊ณ  ,์ด ์ •๋ง ๊ฐ„๋‹จํ•œ ์ˆ˜์ •์ด virtualenv์— ๋‚˜ํƒ€๋‚  ๋•Œ๊นŒ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ์–ด๋ฆฌ์„์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @ raxod502!

๋„ค, ๊ณง ๊บผ๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” PEP 518์„ ์ถœ์‹œ ํ•  ๊ฐœ๋ฐœ์ž ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. PEP 518์ด์—†๋Š” ํ• 10์ด์žˆ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๊ณ„ํš์„ ์ •ํ•  ์‹œ๊ฐ„์„ ์ฐพ๋Š” ๋ฐ ๋‹ฌ๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋Š” 2018-04-14์— ์ถœ์‹œ ๋œ pip 10.0.0์— ์˜ํ•ด ์ˆ˜์ • ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์—„๋ฐ€ํžˆ ์ˆ˜์ •์„ ๋งํ•˜๋Š” ๊ฒƒ์€์ด์—ˆ๋‹ค distlib 0.2.6 ์ž์‹ ๊ณผ PIP์— vendoredํ•˜๊ณ , PR4819 ์ฒซ ๋ฒˆ์งธ ์ฃผ์‚ฌ์œ„ 10.0.0b2 ๋“ฑ์žฅ ๋…„ 10 ์›” 2017 ๋…„.

๊ธฐ๋ณธ ์ˆ˜์ • ์‚ฌํ•ญ์€ distlib์˜ ์ปค๋ฐ‹ 9285cca์—์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค . vsajip์ด 2017 ๋…„ 5 ์›” 28 ์ผ์— ์—ฌ๊ธฐ์—์„œ ์–ธ๊ธ‰ ํ–ˆ๋“ฏ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ Harald Nordgren์˜ ์•„์ด๋””์–ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ (OS๊ฐ€ Posix๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ ๊ฒฝ๋กœ๊ฐ€ ์ถฉ๋ถ„ํžˆ ์งง๊ณ  ๊ณต๋ฐฑ์ด ์—†์Œ)์—๋Š” ๊ณ„์† ๋‹จ์ˆœ shebang์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  /bin/sh exec ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธธ๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ด ํฌํ•จ ๋œ ๊ฒฝ๋กœ๋ฅผ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค.

Mac OS X 10.11.6์—์„œ ๋น ๋ฅธ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ณต๋ฐฑ์ด์žˆ๋Š” ๊ธด ๊ฒฝ๋กœ์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“  ๋‹ค์Œ pip3 install ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ฒ„๊ทธ์— ์„ค๋ช… ๋œ ๋ชจ๋“  ๊ฒƒ์ด ๋ชจ๋“  OS์—์„œ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

Ubuntu 16.04.5 LTS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pip๋ฅผ 9.0.1์—์„œ 18.1๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  (๋‹ฌ๋ ฅ ๊ธฐ๋ฐ˜ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜) virtualenv๋ฅผ 15.0.1์—์„œ 16.0.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv

์ด์ œ ๋ชจ๋“  pip ๋ช…๋ น์€ ๋ฃจํŠธ ๊ฒฝ๋กœ์— ๊ณต๋ฐฑ์ด์žˆ๋Š” virtualenv์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

@JLDH ๋ฐ @gandie ์—์„œ ํ™•์ธ ํ•œ๋Œ€๋กœ์ด ๋ฌธ์ œ๋Š” ์ด์ œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ pip ๋ฐ virtualenv๋Š” virtualenv์˜ ๋ฃจํŠธ์— ๊ณต๋ฐฑ์ด์žˆ์„ ๋•Œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฑฐ ๋‹ซ์•„! ๊ธฐ๋ณธ ์ˆ˜์ • @vsajip์— ๋Œ€ํ•œ ์ž‘์—…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ด์ „ ํ‹ฐ์ผ“ :ํ•˜์ง€๋งŒ ์•ˆ๋˜๋Š” ์ด์œ 

! / usr / bin / env ํŒŒ์ด์ฌ?

@rirl , ๋‹ซํžŒ ์ด์Šˆ์— ๋Œ“๊ธ€์„ ๋‚จ๊ธฐ๋Š” ๊ฒƒ์€ ์•„์ด๋””์–ด์˜ ๊ด€์‹ฌ์„ ๋Œ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์— ํ•ด๊ฒฐ์ฑ…์ด ์ฃผ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด virtulenv๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ๊ฐœ์„  ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ด์Šˆ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ณ , ์–ด๋–ค ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚˜์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ๋งํ•˜๊ณ , ์™œ ๋ณ€ํ™”๊ฐ€ ์ƒˆ๋กœ์šด virtualenv๋ณด๋‹ค ๋‚˜์€์ง€์— ๋Œ€ํ•œ ์‚ฌ๋ก€๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

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