Python-future: virtualenv + python-future = ๊นจ์ง„ virtualenv

์— ๋งŒ๋“  2015๋…„ 05์›” 20์ผ  ยท  18์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PythonCharmers/python-future

๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์žฌ์ƒ์‚ฐ:

$ virtualenv venv
$ ./venv/bin/pip install future virtualenv
Collecting future
  Using cached future-0.14.3.tar.gz
Collecting virtualenv
  Using cached virtualenv-12.1.1-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
  Running setup.py install for future
Successfully installed future-0.14.3 virtualenv-12.1.1
$ ./venv/bin/virtualenv -ppython3.4 venv34
Running virtualenv with interpreter /usr/bin/python3.4
Traceback (most recent call last):
  File "/home/anthony/venv/local/lib/python2.7/site-packages/virtualenv.py", line 8, in <module>
    import base64
  File "/usr/lib/python3.4/base64.py", line 9, in <module>
    import re
  File "/usr/lib/python3.4/re.py", line 336, in <module>
    import copyreg
  File "/home/anthony/venv/lib/python2.7/site-packages/copyreg/__init__.py", line 7, in <module>
    raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.

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

Ubuntu 14.04์˜ ๊ฒฝ์šฐ ์ด ์กฐํ•ฉ์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • Python 3.4์šฉ pip ์„ค์น˜(https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • ์ด์ „ virtualenv๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค(python 2.7์—์„œ python 3.4๋กœ).
$ sudo pip3.4 install virtualenv
  • ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • ์ด์ œ ๋‹ค์Œ ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
$ virtualenv venv34
Using base prefix '/usr'
New python executable in venv34/bin/python3
Also creating executable in venv34/bin/python
Installing setuptools, pip, wheel...done.

$ ./venv34/bin/pip install virtualenv
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2

$ ./venv34/bin/virtualenv -p python venv
Running virtualenv with interpreter /usr/bin/python
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.

$ /usr/bin/python --version
Python 2.7.6

$ ./venv/bin/pip install future virtualenv
Collecting future
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Successfully installed future-0.15.2 virtualenv-13.1.2

$ ./venv34/bin/pip install future
Collecting future
Installing collected packages: future
Successfully installed future-0.15.2
  • C ๋˜๋Š” C++( ref )๋กœ ์ž‘์„ฑ๋œ Python ํ™•์žฅ์—์„œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด:
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y python3.4-dev
$ sudo apt-get install -y python3-software-properties

์ด์ œ ํ†ก์Šค๊ฐ€ ๋ฉ‹์ง€๊ฒŒ ๋‹ฌ๋ฆฐ๋‹ค :)

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

์ด๊ฒƒ์€ virtualenv ์˜ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. 2.7๊ณผ 3.4 ๋ชจ๋“ˆ ๊ฒฝ๋กœ๋ฅผ ๋’ค์ฃฝ๋ฐ•์ฃฝ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—…์ŠคํŠธ๋ฆผ์— ๋ณด๊ณ ๋œ ๋ช‡ ๊ฐ€์ง€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/pypa/virtualenv/issues/745
https://github.com/pypa/virtualenv/issues/671
https://github.com/pypa/virtualenv/issues/625
https://github.com/pypa/virtualenv/pull/697

์ง€๊ธˆ์€ Python 3.3 ์ด์ƒ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” pyvenv ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

pyvenv๋Š” ์‹ค์ œ๋กœ 2+3์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค(ํŠนํžˆ pyvenv๊ฐ€ ์ •ํ™•ํ•˜์ง€ ์•Š์€(๊ทธ๋ฆฌ๊ณ  stdlib์— ์ขŒ์ดˆ๋˜์–ด ๊ณ ์น  ์ˆ˜ ์—†๋Š”) ๋งŽ์€ edgecase๋ฅผ ๊ณ ๋ คํ•˜๋ฉด). py3 ๋ชจ๋“ˆ ์ด๋ฆ„์˜ ์„€๋„์ž‰์—์„œ ์œ ์šฉํ•œ ๋น„ํŠธ(๋ฐฑํฌํŠธ, ์ด๋™ ๋“ฑ)๋ฅผ ๋ถ„ํ• ํ•  ์ž ์žฌ์  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์–ธ๊ธ‰ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, Anthony. Python 3.4 ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” Python 2.7 site-packages ํด๋”๊ฐ€ ์žˆ์œผ๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์€ ์†์ƒ์ด ๋ฐœ์ƒํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ด๊ฒƒ์ด virtualenv ๋ฒ„๊ทธ๋ผ๋Š” Elliott์˜ ๋ง์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. (์•„๋งˆ๋„ ๋ฒ„๊ทธ #673์˜ ์žฌํฌ์žฅ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

conda๋ฅผ ๋ฐœ๊ฒฌํ•œ ์ดํ›„๋กœ 2๋…„ ๋™์•ˆ virtualenv๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณด๊ธฐ ์œ„ํ•ด ๋” ๋•œ์งˆํ•˜๋Š” ์‹œ๊ฐ„์„ ์ฐพ์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ https://github.com/pypa/virtualenv/pull/697 ์„ ์ฝ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ถ€์„œ์ง€๊ธฐ ์‰ฌ์šด ํ•ดํ‚น์˜ ์ƒˆ ๋‘ฅ์ง€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ...

์งˆ๋ฌธ์„ ํ•ด๊ฒฐํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋งˆ ๋‚ด๊ฐ€ ์ถ”์ธกํ•  ๊ฒƒ์ด๋ผ๊ณ  ๋Œ€๋‹ตํ•œ ํ›„ wontfix๋กœ ๋‹ซ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

py3 ๋ชจ๋“ˆ ์ด๋ฆ„์˜ ์„€๋„์ž‰์—์„œ ์œ ์šฉํ•œ ๋น„ํŠธ(๋ฐฑํฌํŠธ, ์ด๋™ ๋“ฑ)๋ฅผ ๋ถ„ํ• ํ•  ์ž ์žฌ์  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@qulogic @edschofield ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ ํšŒ์‚ฌ์—์„œ ํ•˜๋Š” pythonpath ๋งˆ์ด๋‹์˜ ํšจ๊ณผ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ ์ดํ›„๋กœ ๊ทธ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ฐ*

@bukzor ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ์žฌ์ƒ์‚ฐ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ฐฉ๊ธˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. virtualenv 12.04์— ๋„์ž…๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ ์—†์ด virtualenv 12.02์— ๊ณ ์ •ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

fwiw, ์ด๊ฒƒ์€ virtualenv ์ธก์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•œ ์ปค๋ฐ‹์ž…๋‹ˆ๋‹ค. https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030

๊ทธ๋Ÿฌ๋‚˜ ๋ฐ๋น„์•ˆ์—์„œ ๋ฌธ์ œ(?)๋ฅผ ์ผ์œผํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— ๋˜๋Œ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•˜๋Š” virtualenv์šฉ ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/asottile/virtualenv-hax

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. virtualenv 12.0.2๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ฒ„์ „์€ 13.1.2์ž…๋‹ˆ๋‹ค. valerymelou๊ฐ€ ์–ธ๊ธ‰ํ•œ ๋Œ€๋กœ 12.0.2๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

12.0.2๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๊ฒƒ๋„ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

Ubuntu 14.04์˜ ๊ฒฝ์šฐ ์ด ์กฐํ•ฉ์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • Python 3.4์šฉ pip ์„ค์น˜(https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • ์ด์ „ virtualenv๋ฅผ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค(python 2.7์—์„œ python 3.4๋กœ).
$ sudo pip3.4 install virtualenv
  • ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • ์ด์ œ ๋‹ค์Œ ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
$ virtualenv venv34
Using base prefix '/usr'
New python executable in venv34/bin/python3
Also creating executable in venv34/bin/python
Installing setuptools, pip, wheel...done.

$ ./venv34/bin/pip install virtualenv
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2

$ ./venv34/bin/virtualenv -p python venv
Running virtualenv with interpreter /usr/bin/python
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.

$ /usr/bin/python --version
Python 2.7.6

$ ./venv/bin/pip install future virtualenv
Collecting future
Collecting virtualenv
  Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Successfully installed future-0.15.2 virtualenv-13.1.2

$ ./venv34/bin/pip install future
Collecting future
Installing collected packages: future
Successfully installed future-0.15.2
  • C ๋˜๋Š” C++( ref )๋กœ ์ž‘์„ฑ๋œ Python ํ™•์žฅ์—์„œ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด:
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y python3.4-dev
$ sudo apt-get install -y python3-software-properties

์ด์ œ ํ†ก์Šค๊ฐ€ ๋ฉ‹์ง€๊ฒŒ ๋‹ฌ๋ฆฐ๋‹ค :)

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ๋ณด์•˜๊ณ  fernandojunior ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์ง€๋งŒ ์ง€๊ธˆ์€ virtualenv๋ฅผ 14.0.5๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์ด ๋ฒ„์ „์—์„œ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ €๋Š” linuxmint 17.3 x64๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ˜ธ์ŠคํŠธ์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ conda ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ด ๋Œ€ํ™”๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ๊ณ  python-future ์— ๋Œ€ํ•œ ๋‚จ์€ ์ž‘์—…์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ํ˜น์‹œ ํ‹€๋ฆด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋‹ค์‹œ ์—ด์–ด์ฃผ์„ธ์š” :)

๋„ต ๋„ต! ์ด๊ฒƒ์€ virtualenv ํ”„๋กœ์ ํŠธ์—์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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