์ต์ Python 2.7์์ ์ต์ ์์ ๋ฒ์ ์ virtualenv๋ก ์์ฑํ virtualenv ๋ด์ ์ต์ ์์ ๋ฒ์ ์ IPython์ ์ค์นํ๋๋ฐ ์ฌ์ ํ virtualenv ๋ด๋ถ์ IPython์ ์ค์นํด์ผ ํ๋ค๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
์์ฌ์ค๋ฌ์ด ์ ์ด ์์ผ๋ฉด virtualenv๋ฅผ ๋ง๋ค๊ณ source [virtenv]/bin/activate
๋ก ํ์ฑํํ ๋ค์ pip install ipython
๋ก ipython์ ์ค์นํ์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ipython์ ์คํํ๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด which ipython
๋ฅผ ์ํํ์ผ๋ฉฐ ๊ฐ์ ํ๊ฒฝ ๋ด์์ ipython
๋ฐ์ด๋๋ฆฌ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฐ๋ฆฌํต๋๋ค. ๊ทธ๋ฌ๋ ipython
๋ฅผ ํธ์ถํ๋ฉด WARNING message
๋ฅผ ์ป์ต๋๋ค.
WARNING: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv
.
๊ฒฝ๊ณ ๊ฐ ํ์๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
IPython ๋ด๋ถ์์ ๋ค์์ ์ธ์ํด ๋ณด์ญ์์ค.
import os, sys, IPython
print os.environ['VIRTUAL_ENV']
print sys.executable
print IPython.__file__
print sys.path
@minrk๋ ๊ฐ์ฌํฉ๋๋ค. ๋ค์์ ์ถ๋ ฅ์ ๋๋ค.
๋ช
๋ น์ค์์ IPython์ ํธ์ถํ๊ธฐ ์ ์ ๋ด ํ๋กฌํํธ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค.
([name of virtual env]) [my regular prompt]
๊ทธ๋ฐ ๋ค์ IPython์ ์์ผ๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
print os.environ['VIRTUAL_ENV']
# correctly prints the path to the environment
print sys.executable
# Prints the external path to Python (?)
print IPython.__file__
# Prints the external path to the ipython installation's __init__.pyc (?)
print sys.path
# Prints the path to the site-packages folder from the virtualenv at the top.
# Then the bin path of the Python's external installation (?)
# Then some paths to individual packages from the external installation (?)
# Then the paths to individual packages from the virtualenv (and it misses the virtualenv's installation of IPython, ?)
# Then a few more paths to individual packages of the external installation (?)
# Finally the IPython from the external installation (?)
IPython ์ธ์
์ ์ข
๋ฃํ๋ฉด ํ๋กฌํํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค.
([name of virtual env]) [my regular prompt]
๋ช
ํํ ํ๊ธฐ ์ํด, ๋ด๊ฐ ์ธ๋ถ ์ค์น _๋ผ๊ณ ๋งํ ๋ ๋๋ virtualenv ๋ด์์ *๊ฐ ์๋๊ณ ์์คํ
์ค์น์ ์ผ๋ถ๊ฐ ์๋๋ผ $PATH
๋ฐ $LD_LIBRARY_PATH
์ ๋งจ ์์ ํฌํจ๋ ์ค์น๋ฅผ ์๋ฏธํฉ๋๋ค.
์๋ง๋ ๋ด๊ฐ ๋๋ฝ๋ ํ๊ฒฝ ๋ณ์๊ฐ ์๊ณ ์ด๋ ๋ด virtualenv์ ํจ๊ป ์ฌ์ฉํ๊ณ PATH
์ ์์ ๋ถ๋ถ์ ํฌํจํ๋ ค๋ ์ธ๋ถ ์ค์น๊ฐ ์๋๋ผ ์์คํ
์ค์น๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋ฏฟ๋๋ก IPython์ ํผ๋์ค๋ฝ๊ฒ ํฉ๋๋ค. PATH
๋ฐ LD_LIBRARY_PATH
?
head $(which ipython)
๋ก ๋ฌด์์ ์ป์ ์ ์์ต๋๊น?
ํ๋ ๋: sys.argv
sys.executable์ด ์๋ชป๋ ๊ฒฝ์ฐ Python ํจํค์ง๊ฐ ๋ก๋๋๊ธฐ ์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์ ํํ ipython
์์คํ
์ด ํ๊ฒฝ์ ์ค์น๋ ์์คํ
์ด ์๋ ๊ฒฝ์ฐ์ ๋ฐ์ํ๋ ์ผ์
๋๋ค(์: ํ๊ฒฝ์ด ํ์ฑํ๋ ์ํ์์ /usr/bin/ipython
๋ฅผ ์ํํ ๊ฒฝ์ฐ, ์ฐ๋ฆฌ ๋ชจ๋๋ ์๋ชป ๋์ํ ๊ฒ์ผ๋ก ์์ํด์ผ ํจ).
์์ ์ด hash -r
๋งํผ ๊ฐ๋จํ ์ ์์ต๋๋ค. ์๋ํด ๋ณผ ์ ์์ต๋๊น?
@minrk๋ ๊ฐ์ฌํฉ๋๋ค. head $(which ipython)
๋ฐํ:
#!/path_to_my_virtual_env/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.13.1','console_scripts','ipython'
__requires__ = 'ipython==0.13.1'
import sys
from pkg_resources import load_entry_point
sys.exit(
load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
)
๊ทธ๋ฆฌ๊ณ print sys.argv
๋ ์ธ๋ถ Python ์ค์น ๊ฒฝ๋ก๋ฅผ ๋ฐํํฉ๋๋ค.
ํฐ๋ฏธ๋์์ hash -r
๋ฅผ ์คํํ๋ฉด ํจ๊ณผ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค!
์ด์ ๋ค๋ฅธ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค.
WARNING: IPython History requires SQLite, your history will not be saved
๋ด virtualenv๋ฅผ ๋นํ์ฑํํ๊ณ ์ธ๋ถ ์ค์น์์ ipython์ ์คํํ๋ฉด ์ด ๋ฉ์์ง๊ฐ ํ์๋์ง ์๊ธฐ ๋๋ฌธ์ ํฅ๋ฏธ๋กญ์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๋น์ ์ด ํ ์ผ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
ipython
์ ์คํํ๊ณ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ณด์์ต๋๋ค.๋ค์์ ๊ด๋ จ ์ ๋ณด์ hash -r
์ด ์์ ํ ์ด์ ์
๋๋ค.
which
๋ ์ด ์บ์๋ฅผ ์ธ์ํ์ง ๋ชปํ๋ฏ๋ก which ipython
๋ ์ ์ธ์
์์ ์ด์ ์ ํธ์ถ๋ ๊ฒฝ์ฐ ํธ์ถ๋ ipython
๋ฅผ ๋ฐ๋์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์๋๋๋ค.hash -r
๋ ๋จ์ํ ์ด ์บ์๋ฅผ ์ฌ์ค์ ํ์ฌ which
๊ฐ ๋ค์ ํ ๋ฒ ์ ํํ๋๋ก ํฉ๋๋ค.sqlite์ ๊ฒฝ์ฐ virtualenv์ ์ด๋ค โโPython์ ์ฌ์ฉํ์ จ์ต๋๊น?
@minrk ๋ค ๋ง์ต๋๋ค! ๊ฐ์ฌ ํด์. ํ์ด์ฌ 2.7 x64๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค
ํ์ด์ฌ์ ์ง์ ๋ง๋์ จ๋์? ๊ทธ๋ ๋ค๋ฉด Python์ ์ปดํ์ผํ ๋ libsqlite๊ฐ ์กด์ฌํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธํด์ผ ํฉ๋๋ค.
@minrk๋ ๊ฐ์ฌํฉ๋๋ค. libsqlite
๋ ์ธ๋ถ IPython์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฆ, ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ์ง ์์ ๋ ์คํํ๋ ๊ฒ์
๋๋ค PATH
์๋จ์ ์ธ๋ถ ์ค์น๋ฅผ ํฌํจํ๋ ค๋ฉด LD_LIBRARY_PATH
). ์ฆ, ์ธ๋ถ IPython์ด ์์คํ
์ค์น์์ libsqlite
๋ฅผ ์ฌ์ฉํ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค(์๋ง๋ LD_LIBRARY_PATH
์ ๋ค๋ฅธ ๊ฒฝ๋ก์์). ๊ทธ๊ฒ ๊ฐ๋ฅํ ๊น์?
์ด๋ ์ชฝ์ด๋ , ๋ชจ๋ ๋์์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ ๊ฐ ์ ๊ณ ํ ์๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ผ๋ฏ๋ก ํฐ์ผ์ ์์ ํ๊ฒ ์ข ๋ฃํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ปดํ์ผ ์๊ฐ ๋ฌธ์ ์ ๋๋ค. ํค๋ ๋ฑ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. (ํ์ด์ฌ์ ๋ค์ ์ปดํ์ผํ์ง ์๊ณ ๋ ๊ณ ์น ์ ์์ต๋๋ค)
.py ํ๋กํ ์คํ ์ํํธ์จ์ด๋ฅผ ๋
ธํธ๋ถ์ผ๋ก ์ค์ ํ๋๋ฐ ์คํ๋์ง ์์์ต๋๋ค!
๊ทธ๋ผ ,์ฐพ์์!
๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์์ ์ด
hash -r
๋งํผ ๊ฐ๋จํ ์ ์์ต๋๋ค. ์๋ํด ๋ณผ ์ ์์ต๋๊น?