@carreau ์์ ์
๋ฐ์ดํธ:
๋ค์ ์ด๋ฉด 5.4๋ฅผ ํ๊ทธ๋ก ์ง์ ํ์ฌ shutil_get_terminal_size๋ฅผ ๊ณต๊ธํด์ผ ํฉ๋๋ค.
ipython sudo apt-get install ipython-notebook
, ipython
์ค์น ํ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ฅ๊ฐ ๋ํ๋ฉ๋๋ค.
jiangyuping@Lenovo :~$ ipython
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/usr/local/bin/ipython", 4ํ,
IPython์์ ๊ฐ์ ธ์ค๊ธฐ start_ipython
ํ์ผ "/usr/local/lib/python2.7/dist-packages/IPython/init .py ", 48ํ,
.core.application import ์ ํ๋ฆฌ์ผ์ด์
์์
ํ์ผ "/usr/local/lib/python2.7/dist-packages/IPython/core/application.py", 25ํ,
IPython.core ๊ฐ์ ธ์ค๊ธฐ ๋ฆด๋ฆฌ์ค์์, crashhandler
ํ์ผ "/usr/local/lib/python2.7/dist-packages/IPython/core/crashhandler.py", 28ํ,
IPython.core์์ ultratb ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/usr/local/lib/python2.7/dist-packages/IPython/core/ultratb.py", 128ํ,
IPython.utils.terminal์์ ๊ฐ์ ธ์ค๊ธฐ get_terminal_size
ํ์ผ "/usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py", 22ํ,
backports.shutil_get_terminal_size์์ get_terminal_size๋ฅผ _get_terminal_size๋ก ๊ฐ์ ธ์ค๊ธฐ
ImportError: ์ด๋ฆ์ด shutil_get_terminal_size์ธ ๋ชจ๋์ด ์์ต๋๋ค.
apt ์ธ๋ถ์ ์ค์น๋ IPython์ ์ต์ ๋ณต์ฌ๋ณธ์ด ์์ผ๋ฉฐ backports.shutil_get_terminal_size ํจํค์ง๊ฐ ํ์ํฉ๋๋ค. pip
๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ์ญ์์ค.
@takluyver pip install ipython
์ดํ์ ๋ํ๋ฉ๋๋ค.
jiangyuping@Lenovo :~/ipython$ pip install ipython
์๊ตฌ ์ฌํญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ(--upgrade๋ฅผ ์ฌ์ฉํ์ฌ ์
๊ทธ๋ ์ด๋): /usr/local/lib/python2.7/dist-packages์ ipython
๊ทธ๋ฌ๋ฉด ipython
๊ฐ ๋ํ๋ฉ๋๋ค.
jiangyuping@Lenovo :~/ipython$ ipython
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/usr/local/bin/ipython", 4ํ,
IPython์์ ๊ฐ์ ธ์ค๊ธฐ start_ipython
ํ์ผ "/home/jiangyuping/ipython/IPython/ init .py", 48ํ,
.core.application import ์ ํ๋ฆฌ์ผ์ด์
์์
ํ์ผ "/home/jiangyuping/ipython/IPython/core/application.py", 25ํ, in
IPython.core ๊ฐ์ ธ์ค๊ธฐ ๋ฆด๋ฆฌ์ค์์, crashhandler
ํ์ผ "/home/jiangyuping/ipython/IPython/core/crashhandler.py", 28ํ, in
IPython.core์์ ultratb ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/home/jiangyuping/ipython/IPython/core/ultratb.py", 128ํ,
IPython.utils.terminal์์ ๊ฐ์ ธ์ค๊ธฐ get_terminal_size
ํ์ผ "/home/jiangyuping/ipython/IPython/utils/terminal.py", 22ํ, in
backports.shutil_get_terminal_size์์ get_terminal_size๋ฅผ _get_terminal_size๋ก ๊ฐ์ ธ์ค๊ธฐ
ImportError: ์ด๋ฆ์ด shutil_get_terminal_size์ธ ๋ชจ๋์ด ์์ต๋๋ค.
๋ด๋ง์:
pip install backports.shutil_get_terminal_size
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ IPython์ ์ข ์์ฑ์ผ๋ก ๊ฐ์ ธ์ค์ง ์๋๋ค๋ฉด ์๋ง๋ ์ด์ ๋ฒ์ ์ pip๊ฐ ์์์ ์๋ฏธํ ์ ์์ต๋๋ค. ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด:
pip install --upgrade setuptools pip
๊ฐ์ฌํฉ๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์์ต๋๋ค.
๋๋ ๋ง์ ๊ฒ์ ์๋ํ๋ค. ๋ง์ง๋ง์ผ๋ก ํด๊ฒฐ๋ ๊ฒ์ setuptools
์
๋ฐ์ดํธ์์ต๋๋ค. ๋ํ pip๋ฅผ ์
๋ฐ์ดํธํ๊ณ ipython ๋ฑ์ ๋ค์ ์ค์นํ์ต๋๋ค.
๊ฐ์ฌ ํด์! ์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์์ต๋๋ค. ํ์ง๋ง ๊ทธ๊ฒ์ ๋์๊ฒ ์์ด๋์ด๋ฅผ ์ฃผ์๋ค ... ๋๋ backports.shutil_get_terminal_size์ whl ํ์ผ๋ก pip install --upgraded๋ฅผ ์ํํ์ต๋๋ค.
๊ทธ ์ ์๋ ๋จ์ํ pip ์ค์น๋ฅผ ์ํํ๋ฉด "์๊ตฌ ์ฌํญ์ด ์ด๋ฏธ ์ถฉ์กฑ๋จ" ๋ฑ์ด ๋ฐ์ํ์ต๋๋ค.
์ด์ Turi์ GraphLab Create๋ฅผ ์คํํ ์ ์์ต๋๋ค :)
@jnault Turi์ GraphLab Create๋ฅผ ์ค์นํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ ํํ ์ด๋ค ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ จ๋์?
์ ํํ ๊ธฐ์ต์ ์๋๋๋ฐ ๊ฝค ์ฌ์ ๋๊ฑธ๋ก ๊ธฐ์ตํฉ๋๋ค. ๋ด ๋จ๊ณ:
1) ํ์ฅ์๊ฐ .whl์ธ ํด๋น ํ์ผ์ Google์์ ๊ฒ์ํ๊ณ
2) ๊ตฌ๊ธ ๊ฒ์ Whl ํ์ผ ์ค์น ๋ฐฉ๋ฒ
ํ . ์ค์ผ์ด snarky ๋๋ ๋ญ๊ฐ ๋ณด์
๋๋ค. ์ง์ฌ์ ๋ด์ ๋์์ ๋๋ฆฌ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ง ๊ทธ๋๋ก ๋ด๊ฐ ํ ์ผ์
๋๋ค. ํ์ผ์ด pypi์์ ์จ ๊ฒ์ด ํ์คํฉ๋๋ค. ๋๋ whl ํ์ผ์ด Everything์ ์ค์นํ ์ ์๋ค๊ณ ์๊ฐํ๊ณ ์์ผ๋ฏ๋ก ํํ์ด ์ข์ ์ถ์ฒ์์ ๊ฐ์ ธ์๋์ง ํ์ธํ์ต๋๋ค.
๋๋ ๋ช
๋ น์ด ๋ค์๊ณผ ๊ฐ๋ค๊ณ ์ถ์ธกํ๋ค: pip install --upgrade backports.shutil_get_terminal_size.whl
@oschow ์ด๊ฒ์ _should_ ์ผ๋ฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.
# start by making sure pip, setuptools are up to date:
pip install --upgrade setuptools pip
# uninstall if pip thinks you already have it but don't seem to:
pip uninstall backports.shutil_get_terminal_size
# install it again with out definitely-up-to-date pip:
pip install --upgrade backports.shutil_get_terminal_size
^ Minrk๋ ๋ ๋์ ์กฐ์ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Minrk๋ "pip๊ฐ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ค๊ณ ์๊ฐํ์ง๋ง ์๋ ๊ฒ ๊ฐ๋ค๋ฉด"์ด๋ผ๊ณ ์ผ์ต๋๋ค. ๋ฐ๋ผ์ ํ์ผ์ด ์ด๊ธฐ python ์ค์น์์ ์์ฝ๋์์ง๋ง ๋๋ฝ๋์์ ์ ์์ต๋๊น? ๋ฐ๋ผ์ ๊ทธ๊ฒ์ ํ์ฌ๋ก ๋์ด๋์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ต๋๊น?
Graphlab Create๋ฅผ ์ค์นํ๋ ค๊ณ ํ ๋๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. minrk์ ์๋ฃจ์ ๋ ์ ๋ฅผ ์ํด ๊ณ ์ณค์ต๋๋ค.
@minrk ๋ ์ ๋ฅผ ์ํด ์๋ํ๋ ์๋ฃจ์
์ ๊ฐ์ง๊ณ ์์๊ณ ์ ๊ฑฐ ํ ์ค์น๊ฐ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
์ฌ๊ธฐ ๋ด๊ฐ ํ ์ผ์ด ์์ต๋๋ค.
pip ์ ๊ฑฐ backports.shutil_get_terminal_size
pip install --upgrade backports.shutil_get_terminal_size
<path-to>/Python/2.7/site-packages/backports/__init__.*
์ ๊ฑฐ
@bevice ๊ทธ๋ผ?
์ง๊ธ๊น์ง ์ด ์ค๋ ๋๋ ๋ค๋ฅธ ์ค๋ ๋์ ๋ํ ์ ์์ผ๋ก ์์ ํ ์ ์์์ต๋๋ค.
๋ด๊ฐ ๋ฌ๋ฆฌ๋ฉด
$ python -s
>>> from backports.shutil_get_terminal_size import get_terminal_size
>>> get_terminal_size()
terminal_size(columns=112, lines=40)
ํจ๊ณผ๊ฐ์๋ค. ๊ทธ๋ฌ๋ ipython ๋๋ jupyter notebook์ ์คํํ๋ฉด ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ shutil_get_terminal_size๋ฅผ ์ฐพ์ง ๋ชปํฉ๋๋ค.
์ด๊ฒ์ ๋ค์์คํ์ด์ค ํจํค์ง ๊ธฐ๊ณ๋ฅผ ์๋ง์ผ๋ก ๋ง๋ ๋ ๋ค๋ฅธ backports.<something>
ํจํค์ง๊ฐ ์ด๋๊ฐ์ ์ค์น๋์ด ์์์ ์๋ฏธํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ๊ทธ๊ฒ์ ์ฐพ์์ ์ ๊ฑฐํด์ผ ํ ๊ฒ์
๋๋ค. ์ค์น๋ ๋ชจ๋ ํจํค์ง๋ฅผ ๋ณด๋ ค๋ฉด pip list
๋ฅผ ์๋ํ์ญ์์ค.
@takluyver ๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ์ฐพ์ ๊ฒ์ ๋๋ค.
backports-abc (0.4)
backports.shutil-get-terminal-size (1.0.0)
backports.ssl-match-hostname (3.4.0.2)
๋ด๊ฐ ์ง๊ธ ๋ฌด์์ ํ ์ ์์๊น?
backports.ssl-match-hostname
๋ฐ backports.shutil-get-terminal-size
๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ์ค์นํ์ญ์์ค.
๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด ์์ฝ๋ค ๋๋ ๋ฌด์ธ๊ฐ๋ฅผ "๋ค์ ์์"ํด์ผ ํฉ๋๊น? ์ธ๊ธ ํ ํจํค์ง๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๊ณ ๋ค์ ์ค์นํด๋ ์๋ํ์ง ์์์ต๋๋ค.
์๋์, ์ฌ์์์ด ์์ต๋๋ค. ๋จ, ์ ๊ฑฐํ ํ ๋ค์ ์ ๊ฑฐํด ๋ณด์ญ์์ค. ์ ๊ฑฐํ ํญ๋ชฉ์ ์ฐพ์ ์ ์์ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค. ๋๋๋ก ๋ค๋ฅธ ์ฅ์์ ์ฌ๋ณธ์ด ์์ต๋๋ค.
๊ทธ๋๋ ์๋ํ์ง ์์ผ๋ฉด backports.ssl-match-hostname
๋ฅผ ์ ๊ฑฐํ๊ณ ์ ๊ฑฐ๋ ์ํ๋ก ๋์ญ์์ค(์ ์ด๋ ํ์ํ ๊ฒ์ ์ฐพ์ ๋๊น์ง...)
๊ด์ฐฎ์. ๋ง์ํด ์ฃผ์ ๋ชจ๋ ๊ฒ์ ์๋ํ์ง๋ง ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์์ต๋๋ค. ๋ด ์ต์ ์ ๋ฌด์์ ๋๊น? ๋ฌธ์ ๋ pymc3๋ฅผ ์ค์นํ ๋ ์์๋์์ต๋๋ค. ๋ค๋ฅธ ํ๋๋ nipype ๋๊ตฌ ์์์ ์ผ๋ถ ๋ชจ๋์ ์ถ๊ฐํ๊ธฐ ์ํด ์ผ๋ถ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฅ ๋ค ์ ๊ฑฐํ๊ณ ๋ค์ ์ค์นํด์ผ ํ๋์? ์ด๊ฒ์ด ์ตํ์ ์๋จ์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
IPython์ ์คํํ๋ ค๋ ๋์ผํ Python์์ ์ด๊ฒ์ ์๋ํ๋ฉด ๋ฌด์์ ์ป์ ์ ์์ต๋๊น?
import backports
print(backports)
๋ฐฑํฌํธ๊ฐ ์ค์น๋ ์ํ์์ ์คํํ์ต๋๋ค.
>>> import backports
>>> print(backports)
<module 'backports' from '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/
๊ทธ๋ฐ ๋ค์ ์ ๊ฑฐํ๊ณ ๋ค์ ์คํํ์ต๋๋ค.
>>> import backports
>>> print(backports)
<module 'backports' (built-in)>
๊ทธ๋์ ๋ถ๋ช ํ ์ด๋๊ฐ์ ๋ญ๊ฐ๋ฅผ ๋ง์น๋ ํจํค์ง๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๋ค์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค. ๊ทธ๊ฒ๋ค์ ์ฐพ์๋๋ผ๋ ๋ฃจํธ ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ์ง ๋ชปํ ์ ์์ต๋๋ค.
ํด๋์ ํ์๋ ๋ค๋ฅธ ํญ๋ชฉ์ด ์์ต๋๊น( /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports/
)?
์๋์, ์ด์ ์ ๊ฑฐ๋์์ผ๋ฏ๋ก ํด๋๊ฐ ์์ ํ ๋๋ฝ๋์์ต๋๋ค. ํด๋ ๊ทธ๋๋ก
../site-packages/backports.shutil-get-terminal-size-1.0.0
๋ ์ค์น๋ ๋ ๊ฑฐ๊ธฐ์ ์์์ต๋๋ค.
Python์์ backports.__path__
๋ฅผ ํ์ธํ ์ ์์ต๋๊น?
๋ฐฑํฌํธ๊ฐ ์ค์น๋์ง ์์ ๊ฒฝ์ฐ:
['/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']
์ด์ ๊ณผ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ๋๊น? ํ์คํ ๋น ์ง๊ฑด๊ฐ์? ๊ฑฐ๊ธฐ์ ์๋ฌด๊ฒ๋ ์๋ค๋ฉด ์ด๋ป๊ฒ ๊ทธ ๊ธธ์ ์ฐพ์ ์ ์๋์ง ์ดํดํ ์ ์์ต๋๋ค.
๋๋ conda2_serverwide ๋๋ ํ ๋ฆฌ์์ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฐฑํฌํธ๋ฅผ ๊ฒ์ํ์ต๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ๋ฌด์์ ์๋ฏธํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ์ฐพ์ ๊ฒ์
๋๋ค.
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/future-0.15.2-py27_0/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/configparser-3.5.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/future/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0/lib/python2.7/site-packages/backports
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_bak
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/get_terminal_size-1.0.0-py27_0/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/ssl_match_hostname-3.4.0.2-py27_1/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports-1.0-py27_0.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports.shutil_get_terminal_size-1.0.0-py27_1.tar.bz2
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc-0.4-py2.7.egg-info
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports-1.0-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports_abc-0.4-py27_0.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/conda-meta/backports.shutil_get_terminal_size-1.0.0-py27_1.json
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.py
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports_abc.pyc
file:///nobackup/archimedes1/Glad/anaconda2_serverwide/pkgs/backports_abc-0.4-py27_0/lib/python2.7/site-packages/backports_abc.pyc
backports
์ ๊ฑฐ ํ Python์ ๋ค์ ์์ํ์
จ์ต๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ Python์ ๋ค์ ์์ํ๊ณ backports.__path__
๋ฅผ ๋ค์ ํ์ธํ ์ ์์ต๋๊น? ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๊ฒฝ๋ก๋ฅผ ์๋ณํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
ํ์ด์ฌ์ ์ด๋ป๊ฒ ๋ค์ ์์ํฉ๋๊น?
๋๋ ๋ํ ๋ค์์ ์๋ํ์ต๋๋ค.
> conda list | grep backports
backports 1.0 py27_0
backports.shutil_get_terminal_size 1.0.0 py27_1 conda-forge
backports_abc 0.4 py27_0
๊ทธ๋์ conda๋ฅผ ์ฌ์ฉํ์ฌ backports.shutil_get_terminal_size๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
> conda uninstall backports.shutil_get_terminal_size
์ด์ ํ์ด์ฌ์์ backports.shutil_get_terminal_size๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ํ๋ฉด ์ฐพ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋์ ipython๊ณผ jupyter๋ฅผ ์ ๊ฑฐํ๊ณ jupyter์ backports.shutil_get_terminal_size๋ ์ค์น๋ conda๋ฅผ ํตํด ipython์ ๋ค์ ์ค์นํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ _์ฌ์ ํ_ ์๋ํ์ง ์์ต๋๋ค! ๋๋ ์ด๋ฆฌ๋ฅ์ ํ๋ค.
๊ทธ๋ฐ ๋ค์ conda๋ฅผ ํตํด ์ค์น๋ฅผ ์ ๊ฑฐํ๊ณ pip๋ฅผ ํตํด ๋ค์ ์ค์นํ์ต๋๋ค. _์ฌ์ ํ_ ์๋ํ์ง ์์ต๋๋ค....
ํ์ด์ฌ์ ์ด๋ป๊ฒ ๋ค์ ์์ํฉ๋๊น?
๋ซ๊ณ ( exit()
) ๋ค์ ์์ํ์ญ์์ค.
๋ฐฑํฌํธ ํ์ธ:
> conda list | grep backports
backports 1.0 py27_0
backports.shutil_get_terminal_size 1.0.0 py27_1 conda-forge
backports_abc 0.4 py27_0
๋ค์ ์์ํ ํ Python์ ์คํํ์ต๋๋ค.
>>> import backports
>>> backports.shutil_get_terminal_size
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'shutil_get_terminal_size'
์ ๊ทธ๋ ์ด๋ ์๋:
> pip install --upgrade backports.shutil_get_terminal_size
Requirement already up-to-date: backports.shutil_get_terminal_size in /nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages
๋๋ ๊ทธ๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ค. ๋ด๊ฐ ๋ฌด์์ ๋ ํ ์ ์์ต๋๊น? ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๋๋ก 'terminal.py'๋ฅผ ํธ์งํ ์ ์์ต๋๊น?
๋ชจ๋ ๋ฐฑํฌํธ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ Python์ ๋ค์ ์์ํ๊ณ ๋ค์์ ํ์ธํ์ญ์์ค.
import backports
backports.__path__
๋ฌด์์ ์ป์ต๋๊น?
>>> import backports
>>> backports.__path__
['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '/nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']
์ด์ ๋๋ ํ ๋ฆฌ( /home/raid2
์๋์ ์๋ ๋๋ ํ ๋ฆฌ)์ ์ค์น๋ ๊ฒ์ด ์์ต๋๊น?
์์คํ ์ ์ฒด์ python ๋ฐ ipython ํจํค์ง๊ฐ ์ ์ฅ๋๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ก์ปฌ ์๋์ฝ๋ค ์ค์น๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฉํดํด์๋ ์๋ฉ๋๋ค. ์ฌ์ค์ /home/raid2... ๋๋ ํ ๋ฆฌ ์๋์ backports.shutil_get_terminal_size ํจํค์ง๊ฐ ์์ต๋๋ค.
์์คํ
์ ์ฒด ์ค์น(์ด์ ๋ฒ์ ์ ipython์ด ์์)๋ฅผ ์คํํ๋ฉด ์ ๋๋ก ์คํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ต์ ์ฝ๋ค๋ก ํ๊ฒฝ์ ์์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค์น๋ฉ๋๋ค.
export PATH="/nobackup/archimedes1/Glad/anaconda2_serverwide/bin:$PATH"
, ์ฐฝ ํฌ๊ธฐ ๊ธฐ๋ฅ์ ์ฐพ์ง ๋ชปํฉ๋๋ค.
๋๋ฒ๊น ์ ๋๊ธฐ ์ํด ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ทธ๊ฒ์ ์คํํ๊ณ ์ถ๋ ฅ์ ๊ฒ์ํ ์ ์์ต๋๊น?
https://gist.github.com/takluyver/73cf4e7e7cff4d95f3b23ea80d59bcab
์ข์!!!1
์ด๊ฒ์ ์ด๋ป๊ฒ ๋ ์๋ํ๋๋ก ํ ๊ฒ์
๋๋ค.
conda์ pip๋ฅผ ์ฌ์ฉํ์ฌ ipython ๋ฐ jupyter ๋ฐ backports.shutil_get_window_size๋ฅผ ์ ๊ฑฐํ์ต๋๋ค.
conda uninstall jupyter ipython backports.shutil_get_window_size
pip uninstall jupyter ipython backports.shutil_get_window_size
ํจํค์ง์ ์๋ฌด๊ฒ๋ ๋จ์ง ์์๋์ง ํ์ธํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ conda๋ก ipython๋ง ๋ค์ ์ค์นํ์ต๋๋ค.
> conda install ipython
Fetching package metadata .........
Solving package specifications: ..........
Package plan for installation in environment //nobackup/archimedes1/Glad/anaconda2_serverwide:
The following NEW packages will be INSTALLED:
backports: 1.0-py27_0
backports.shutil_get_terminal_size: 1.0.0-py27_1 conda-forge
ipython: 5.1.0-py27_1 conda-forge
Proceed ([y]/n)? y
Extracting packages ...
[ COMPLETE ]|###################################################################################| 100%
Linking packages ...
[ COMPLETE ]|###################################################################################| 100%
mihai<strong i="11">@archimedes</strong>:/tmp > ipython
๊ทธ๋ฆฌ๊ณ ์ด์ ์๋ํฉ๋๋ค!!! ์๊ฐ์ ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค @takluyver !
๋ค์์ ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ๋๋ค.
In [2]: run debug_namespace_pkg.py
mod: <module 'backports' from '/home/raid2/mihai/.local/lib/python2.7/site-packages/backports/__init__.pyc'>
backports.__path__ = ['/home/raid2/mihai/.local/lib/python2.7/site-packages/backports', '//nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports']
Found /home/raid2/mihai/.local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
Found //nobackup/archimedes1/Glad/anaconda2_serverwide/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
์๊ฒ ์ต๋๋ค. ์๋ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์ ์ด์ ์๋๋๋ก ํ์๋ฉ๋๋ค. ๋์ค์ ๋๊ตฐ๊ฐ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๋๋ค๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ์ ์ฉํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ฒ์๋ถํฐ ๋ชจ๋ ๊ฒ์ ์ ๊ฑฐํ๊ณ ์ค์นํ๋ ค๊ณ ์๋ํ์ต๋๋ค. ๋ํ ์์์ ๊ณต์ ํ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ต๋๋ค.
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
aranyo-139-61:Desktop shiva$ python debug_namespace_pkg.py
mod: <module 'backports' (built-in)>
backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']
Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
Found /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
No __init__.py found
Found /usr/local/lib/python2.7/site-packages/backports
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
์ด๊ฒ ์ข ๋์์ฃผ์๊ฒ ์ด์? ๋๋ conda๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์์ต๋๋ค.
๊ฐ์ฌ ํด์!
/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
์ ๋ญ๊ฐ๊ฐ ์์ต๋๊น? ์ ๊ฑฐ/์ด๋ฆ ๋ณ๊ฒฝ์ ์๋ํ ์ ์์ต๋๊น?
/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports์ ๋ญ๊ฐ๊ฐ ์์ต๋๊น? ์ ๊ฑฐ/์ด๋ฆ ๋ณ๊ฒฝ์ ์๋ํ ์ ์์ต๋๊น?
์๋ํ์ง๋ง ์ฌ์ ํ ๊ฐ์ ๋ฌธ์ ์ ๋๋ค.
๋๋ฒ๊น ์คํฌ๋ฆฝํธ ๋ฅผ ๋ณ๊ฒฝํ์ต๋๋ค. ๋ค์ ๊ฐ์ ธ์์ ๋ค์ ์คํํด ์ฃผ์๊ฒ ์ต๋๊น?
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
mod: <module 'backports' (built-in)>
backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']
-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
-- Found /usr/local/lib/python2.7/site-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ์ ๊ฑฐ/์ด๋ฆ ๋ณ๊ฒฝํ ํ Python์ ๋ค์ ์์ํ์ จ์ต๋๊น? ์ฌ์ ํ ์ด๋ป๊ฒ๋ ์ฐพ๋ ์ค์ ๋๋ค.
"python debug_namespace_pkg.py" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ๊ทธ๊ฒ์ํ๊ธฐ ์ ์ ํฐ๋ฏธ๋์ ๋ค์ ์์ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ /Users/shiva/Library/Python/2.7/lib/python/site-packages/backports
๋ ํ์คํ ์กด์ฌํ์ง ์์ต๋๊น? ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ๋ช
ํ ์กด์ฌํ์ง ์๋ ํด๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
์, ์ง์ ํ ์์น์์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ต๋๋ค. /usr/local/lib/python2.7/site-packages/backports
์(๋ฅผ) ์๋ฏธํ์ง ์์ต๋๊น?
์๋, ์ฐพ์์ผ ํ ์ฌ๋์
๋๋ค. /Users/shiva
์๋์ ์๋ ๊ฒ์ด ์ด๋ป๊ฒ๋ ๋ฐฉํด๊ฐ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ์ค์ ์ฌ์ ํ โโ์ด๋ป๊ฒ๋ ์ฐพ๊ณ ์์์ ๋ณด์ฌ์ค๋๋ค.
backports.__path__ = ['/Users/shiva/Library/Python/2.7/lib/python/site-packages/backports']
๊ทธ๋ฌ๋ ๋น์ ์ด ๊ทธ๊ฒ์ ์ ๊ฑฐํ ํ์ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. :ํผ๋์ค๋ฌ์ด:
์ํ, .pkg
ํ์ผ์ ๋ํด ์ ํ ๋ชฐ๋๋ ๊ฒ์ด ์์ต๋๋ค. backports.pkg
๋ผ๋ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๊น?
( backports.pkg
๋ ์๋ง๋ site-packages
๋๋ ํ ๋ฆฌ ์ค ํ๋์ ์์ ๊ฒ์ด์ง๋ง ์์คํ
์ ๋ค๋ฅธ ๊ณณ์ ์์ ์๋ ์์ต๋๋ค.)
๋๋ ์ด๋์์ backports.pkg๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋ฃจํธ ํด๋์์ find ./* -name backports.pkg๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๋ง์นจ๋ด ์ฑ๊ณตํ์ต๋๋ค.
ํด๋น ํด๋์ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ์๋ํ์ง ์๊ณ ์ ๊ฑฐํ๋ฉด ์๋ํฉ๋๋ค. ๋์ ์ฃผ์ ์ ์ ๋ง๋ก ๊ณ ๋ง์ต๋๋ค :)
์ด์ํ๊ฒ๋, ๊ทธ๊ฒ์ ์ ๊ฑฐํ๋ ๊ฒ์ด ๋จ์ง ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ๊ณผ ์ ๋ค๋ฅธ์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ์ด์จ๋ ์๋ํด์ ๋คํ์ ๋๋ค.
๋น์ทํ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ pip ์ ๊ฑฐ/์ค์น๊ฐ ๋์์ด ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ ๋๋ฒ๊น
์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ์
๋๋ค( python test.py
๋ก ์ธํด):
mod: <module 'backports' (built-in)>
backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']
-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
๋๋ ๊ฐ์ง๊ณ ์๋ค:
$ ls /home/ihincks/.local/lib/python2.7/site-packages/ | grep backports
backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0
๊ฒฐ๊ตญ ๋ค์ ํดํน ๋ฐฉ๋ฒ์ผ๋ก ์๋ํ๊ฒ ๋์์ต๋๋ค. (๋ฆฌ๋
์ค์์) /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py
๋ฅผ ์ด๊ณ ํ์ ๋ณ๊ฒฝํ์ญ์์ค.
from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
์๊ฒ
from shutil_backports import get_terminal_size as _get_terminal_size
๋ค์ ๊ฐ์ ์ผ - ์ด๋ป๊ฒ ๋ ๊ฑฐ๊ธฐ์ ์๋ ๊ฒ ๊ฐ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค. backport.pkg
ํ์ผ๋ ์ฐพ์ ์ ์์ต๋๊น? ์คํฌ๋ฆฝํธ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
์ต์ ์คํฌ๋ฆฝํธ์ ์ถ๋ ฅ:
mod: <module 'backports' (built-in)>
backports.__path__ = ['/home/ihincks/.local/lib/python2.7/site-packages/backports']
-- Found /usr/local/lib/python2.7/dist-packages/backports --
Files: ['__init__.py', '__init__.pyc', 'shutil_get_terminal_size']
__init__.py contains:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
ํ๋๋ค; ์ฒซ ๋ฒ์งธ ๊ฒฝ๋ก( /home/ihincks/...
)๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค.
/home/ihincks/.local/lib/python2.7/site-packages/
์ backports
๋ฅผ ์ฐพ๋ ์ด์ ๋ฅผ ์ค๋ช
ํ ์ ์๋ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๊น?
๋ฌด์์ ์ฐพ๋์ง ์ ํํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ค์์ /home/ihincks/.local/lib/python2.7/site-packages/
์ ๋ชจ๋ ๊ฒ์
๋๋ค.
backports_abc-0.5.dist-info
backports_abc.py
backports_abc.pyc
backports.shutil_get_terminal_size-1.0.0
bleach
bleach-1.5.0.dist-info
certifi
certifi-2016.9.26.dist-info
configparser-3.5.0.dist-info
configparser-3.5.0-nspkg.pth
configparser.py
configparser.pyc
entrypoints-0.2.2.dist-info
entrypoints.py
entrypoints.pyc
enum
enum34-1.1.6.dist-info
functools32
functools32-3.2.3.post2.dist-info
html5lib
html5lib-0.9999999.dist-info
ipykernel
ipykernel-4.5.2.dist-info
ipython_genutils
ipython_genutils-0.1.0.dist-info
ipywidgets
ipywidgets-5.2.2.dist-info
jinja2
Jinja2-2.8.dist-info
jsonschema
jsonschema-2.5.1.dist-info
jupyter_client
jupyter_client-4.4.0.dist-info
jupyter_console
jupyter_console-5.0.0.dist-info
jupyter_core
jupyter_core-4.2.1.dist-info
markupsafe
MarkupSafe-0.23.dist-info
mistune-0.7.3.dist-info
mistune.py
mistune.pyc
nbconvert
nbconvert-5.0.0.dist-info
nbformat
nbformat-4.2.0.dist-info
pandocfilters-1.4.1.dist-info
pandocfilters.py
pandocfilters.pyc
pexpect
pexpect-4.2.1.dist-info
pickleshare-0.7.4.dist-info
pickleshare.py
pickleshare.pyc
prompt_toolkit
prompt_toolkit-1.0.9.dist-info
ptyprocess
ptyprocess-0.5.1.dist-info
pyzmq-16.0.2.dist-info
qtconsole
qtconsole-4.2.1.dist-info
simplegeneric-0.8.1.dist-info
simplegeneric.py
simplegeneric.pyc
singledispatch-3.4.0.3.dist-info
singledispatch_helpers.py
singledispatch_helpers.pyc
singledispatch.py
singledispatch.pyc
six-1.10.0.dist-info
six.py
six.pyc
terminado
terminado-0.6.dist-info
testpath
testpath-0.3.dist-info
tornado
tornado-4.4.2.dist-info
traitlets
traitlets-4.3.1.dist-info
wcwidth
wcwidth-0.1.7.dist-info
widgetsnbextension
widgetsnbextension-1.2.6.dist-info
zmq
backports.shutil_get_terminal_size-1.0.0
์(๋) ๋ฌด์์ด๊ณ ๊ทธ ์์ ๋ฌด์์ด ๋ค์ด ์์ต๋๊น?
backports.shutil_get_terminal_size
๋จ์ผ ํจ์ get_terminal_size
๋ฅผ ๋
ธ์ถํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํ์ด์ฌ ํจํค์ง์
๋๋ค. ์ด ํด๋์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
./
โโโ backports
โย ย โโโ __init__.py
โย ย โโโ shutil_get_terminal_size
โย ย โโโ get_terminal_size.py
โย ย โโโ __init__.py
โโโ backports.shutil_get_terminal_size.egg-info
โย ย โโโ dependency_links.txt
โย ย โโโ PKG-INFO
โย ย โโโ SOURCES.txt
โย ย โโโ top_level.txt
โโโ HISTORY.rst
โโโ LICENSE
โโโ MANIFEST.in
โโโ PKG-INFO
โโโ README.rst
โโโ setup.cfg
โโโ setup.py
โโโ test_shutil_get_terminal_size.py
โโโ tox.ini
PKG-INFO
์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Metadata-Version: 1.1
Name: backports.shutil_get_terminal_size
Version: 1.0.0
Summary: A backport of the get_terminal_size function from Python 3.3's shutil.
Home-page: https://github.com/chrippa/backports.shutil_get_terminal_size
Author: Christopher Rosell
Author-email: [email protected]
License: MIT
Description: backports.shutil_get_terminal_size
==================================
A backport of the `get_terminal_size`_ function from Python 3.3's shutil.
Unlike the original version it is written in pure Python rather than C,
so it might be a tiny bit slower.
.. _get_terminal_size: https://docs.python.org/3/library/shutil.html#shutil.get_terminal_size
Example usage
-------------
>>> from backports.shutil_get_terminal_size import get_terminal_size
>>> get_terminal_size()
terminal_size(columns=105, lines=33)
History
=======
1.0.0 (2014-08-19)
------------------
First release.
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.2
์, ์๊ฒ ์ต๋๋ค. ์ด๋ ์์ ์์ ์๋์ผ๋ก sdist์ ์์ถ์ ํผ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ฒด ๋๋ ํ ๋ฆฌ( backports.shutil_get_terminal_size-1.0.0
)๋ฅผ ์ญ์ ํด๋ ์ฐจ์ด๊ฐ ์์ต๋๊น? ๊ทธ๋ฅ ํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์๊ฒ ์ต๋๋ค. /usr/local/lib/python2.7/dist-packages/IPython/utils/terminal.py
์ ์๋ ํ์์ผ๋ก ๋๋๋ ธ์ต๋๋ค. ipython
๋ฅผ ์คํํ๋๋ฐ ImportError: No module named shutil_get_terminal_size
์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ /home/ihincks/.local/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0
ํด๋๋ฅผ ์์๋ก /home/ihincks
๋ก ์ด๋ํ์ต๋๋ค. ๊ฐ์ ์ค๋ฅ๋ก ipython
๋ฅผ ๋ค์ ์คํํ์ต๋๋ค.
์, ๊ทธ ํด๋๋ ๊ทธ์ ์ฒญ์ด์ผ ๋ฟ์ด๊ณ /home/ihincks/.local/lib/python2.7/site-packages/backports
๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์์ง ํ์ ์ด ์์ง ์์ต๋๋ค. :-(
ํ , ๋ ๋ง์ ๋์์ด ๋์์ผ๋ฉด ํฉ๋๋ค. ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ๋ฐ๋ง ์ดํดํ๊ณ ์์ต๋๋ค. python ๊ฒฝ๋ก/๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ํญ๋ชฉ์ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํฉ๋๋ค.
๋ฌธ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฝค ์ ์จ๊ฒจ์ง ํ๋ง๋ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๋๊ตฌ๋ ์ง ๋์๊ฒ ssh ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ฌ ์ฃผ๋ณ์ ๋๋ฌ๋ณด๊ณ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ๊ฒ์ ๊บผ๋ คํ์ง ์๋ ์์คํ ์์ ์ด๊ฒ์ ๋ณต์ ํ ์ ์๋ค๋ฉด ์ฐ๋ฝํ์ญ์์ค.
์ ๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค........์ต๊ทผ์ jupyter๋ฅผ ์ค์นํ๋๋ฐ ipython ๋ ธํธ๋ถ ํ์ผ์ ์ด๋ ค๊ณ ํ๋ฉด backports.shutil_get_terminal_size์ ๋ํ ๊ฐ์ ธ์ค๊ธฐ ์ค๋ฅ๋ก ์ปค๋์ด ์ฃฝ์๋ค๊ณ ๋์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก pip๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๊ณ jupyter ๋ฐ backports.shutil-get-terminal-size๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ค์ ์ค์นํ ํ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก python2 -m ipykernel install --user ๋ช ๋ น์ ์คํํ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ด ์ปค๋์ ์๋ช ์ ๋ถ์ด๋ฃ์์ต๋๋ค. ์ฐธ์กฐ : http://askubuntu.com/questions/847263/install-jupyter-for-python-2-7-in-ubuntu-14-04
๊ทธ๋์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ /usr/lib/python2.7/site-packages/backports.shutil_get_terminal_size-1.0.0.dist-info๋ฅผ ๊ฒ์ฌํ ๋ ๋ค์ ํญ๋ชฉ๋ง ์ฐพ์์ต๋๋ค.
total 28
-rw-r--r--. 1 root root 596 Feb 27 10:42 DESCRIPTION.rst
-rw-r--r--. 1 root root 4 Feb 27 10:42 INSTALLER
-rw-r--r--. 1 root root 1175 Feb 27 10:42 METADATA
-rw-r--r--. 1 root root 701 Feb 27 10:42 metadata.json
-rw-r--r--. 1 root root 1455 Feb 27 10:42 RECORD
-rw-r--r--. 1 root root 10 Feb 27 10:42 top_level.txt
-rw-r--r--. 1 root root 110 Feb 27 10:42 WHEEL
๊ฐ์ ธ์ฌ ๊ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ pip --upgrade, pip uninstall/install ipython ๋ฑ ์ดํ์ ์ํ๋ฉ๋๋ค. ๋ฐ๋ผ์ pip๋ ์ค์ ๋ก ํจํค์ง๋ฅผ ์ค์นํ์ง ์๊ณ ํ ๋ง ์ค์นํ ๊ฒ ๊ฐ์ต๋๋ค. .tar.gz ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ipython์์ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ์์ ํ wheel ๋๋ ํ ๋ฆฌ์ ๋ณต์ฌํ์ต๋๋ค. ๊ทธ๊ฒ์ ๊ณ ์น๋ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ์๋๋๋ค. ์ ๋ RHEL7์์ ์คํ ์ค์ด๋ฏ๋ก ์๋ง๋ ๊ทธ๊ฒ๊ณผ ๊ด๋ จ์ด ์์ ๊ฒ์ ๋๋ค.
.dist-info
๋ก ๋๋๋ ๋๋ ํ ๋ฆฌ๋ ์ค์น๋ ํจํค์ง์ ๋ํ ๋ฉํ๋ฐ์ดํฐ ํ์ผ์ด๋ฉฐ ๊ฐ์ ธ์ฌ ์ ์๋ ๊ฒ์ ํฌํจํ์ง ์์ต๋๋ค. ์ฝ๋๋ ์ธ์ ๋๋ ํ ๋ฆฌ์ ์์ด์ผ ํฉ๋๋ค. /usr/lib/python2.7/site-packages/backports
์ฝ๋๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. pip install --user backports.shutil_get_terminal_size
, ipython์ด ๋ฃจํธ ๋๋ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ๊ด์ฐฎ๋ค๋ฉด ํ์ฌ ์ฌ์ฉ์๋ฅผ ์ํด ์ค์นํ์ญ์์ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
๋ํฌ๋ค์ด ์ด๊ฒ์ ํด๊ฒฐํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ค๋ฉด
pip install backports.shutil_get_terminal_size
ํ์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์์คํ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ ๋๋ค.
import sys
print sys.path
ipython ๋ชจ๋ธ์ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก ์์ ๋ฐฑํฌํธ ํจํค์ง๊ฐ ์์ผ๋ฉด ๊ฐ ๊ฒฝ๋ก๋ฅผ ํ์ธ ํ๊ณ ์ง์ ์ญ์ ํ์ญ์์ค.
์ด ๋ฒ๊ทธ์ ๋งค์ฐ ์ด์ํ ๋ฒ์ ์ด ์์ต๋๋ค.
pde<strong i="6">@damoclid</strong>:~$ ipython
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/IPython/__init__.py", line 48, in <module>
from .core.application import Application
File "/usr/lib/python2.7/dist-packages/IPython/core/application.py", line 25, in <module>
from IPython.core import release, crashhandler
File "/usr/lib/python2.7/dist-packages/IPython/core/crashhandler.py", line 28, in <module>
from IPython.core import ultratb
File "/usr/lib/python2.7/dist-packages/IPython/core/ultratb.py", line 128, in <module>
from IPython.utils.terminal import get_terminal_size
File "/usr/lib/python2.7/dist-packages/IPython/utils/terminal.py", line 22, in <module>
from backports.shutil_get_terminal_size import get_terminal_size as _get_terminal_size
ImportError: No module named shutil_get_terminal_size
pde<strong i="7">@damoclid</strong>:~$ python
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
[GCC 6.3.0 20170118] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> import backports.shutil_get_terminal_size
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named shutil_get_terminal_size
>>> import sys
>>> print [p for p in sys.path if os.path.exists(p + "/backports")]
['/usr/lib/python2.7/dist-packages']
>>> import backports
>>> backports.__path__
['/usr/local/lib/python2.7/dist-packages/backports']
>>> os.path.exists("/usr/local/lib/python2.7/dist-packages/backports")
False
>>> dir(backports)
['__doc__', '__name__', '__path__']
>>>
pde<strong i="8">@damoclid</strong>:~$ cd /usr/local/bin/
pde<strong i="9">@damoclid</strong>:/usr/local/bin$ cd ..
pde<strong i="10">@damoclid</strong>:/usr/local$ sudo find . -iname \*backports\*
pde<strong i="11">@damoclid</strong>:/usr/local$
python์ด backports
/ backports.shutil_get_terminal_size
ํจํค์ง๋ ๊ธฐ๋ณธ OS๋ฅผ ์ฐพ์ง ๋ชปํ๋ ์ด์ ๋๋ /usr/local์์ backports
์ ์ ๋ น ๋ฒ์ ์ ์ฐพ๋ ์ด์ ๋ฅผ ์ ๋ง ์ ์ ์์ต๋๋ค. /lib. ๋ด sys.path
:
['', '/usr/lib/python2.7/dist-packages', '/usr/local/lib/python2.7/dist-packages/ropevim-0.7.0-py2.7.egg', '/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/pde/.local/lib/python2.7/site-packages', '/usr/local/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', '/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
pde<strong i="13">@damoclid</strong>:/usr/local$ ls -ld `dpkg -L python-backports-shutil-get-terminal-size `
drwxr-xr-x 26 root root 4096 Mar 7 23:01 /./
drwxr-xr-x 12 root root 4096 Apr 5 2014 /usr/
drwxr-xr-x 201 root root 36864 May 14 22:01 /usr/lib/
drwxr-xr-x 27 root root 20480 Apr 4 15:53 /usr/lib/python2.7/
drwxr-xr-x 296 root root 20480 May 15 18:02 /usr/lib/python2.7/dist-packages/
drwxr-xr-x 3 root root 4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/
-rw-r--r-- 1 root root 75 Aug 19 2014 /usr/lib/python2.7/dist-packages/backports/__init__.py
drwxr-xr-x 2 root root 4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/
drwxr-xr-x 2 root root 4096 May 15 17:35 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/
-rw-r--r-- 1 root root 1 Jul 28 2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/dependency_links.txt
-rw-r--r-- 1 root root 1402 Jul 28 2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/PKG-INFO
-rw-r--r-- 1 root root 10 Jul 28 2016 /usr/lib/python2.7/dist-packages/backports.shutil_get_terminal_size-1.0.0.egg-info/top_level.txt
-rw-r--r-- 1 root root 2913 Aug 19 2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/get_terminal_size.py
-rw-r--r-- 1 root root 338 Aug 19 2014 /usr/lib/python2.7/dist-packages/backports/shutil_get_terminal_size/__init__.py
drwxr-xr-x 398 root root 12288 May 14 22:01 /usr/share/
drwxr-xr-x 3114 root root 126976 May 15 18:02 /usr/share/doc/
drwxr-xr-x 2 root root 4096 May 15 17:35 /usr/share/doc/python-backports-shutil-get-terminal-size/
-rw-r--r-- 1 root root 333 Jul 28 2016 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.Debian.gz
-rw-r--r-- 1 root root 71 Aug 19 2014 /usr/share/doc/python-backports-shutil-get-terminal-size/changelog.gz
-rw-r--r-- 1 root root 1372 Jul 28 2016 /usr/share/doc/python-backports-shutil-get-terminal-size/copyright
๋ค์ ์ด์ด์ 5.4๋ก ํ๊ทธ๋ฅผ ์ง์ ํ๊ฒ ์ต๋๋ค. ์์ ์ ์ํด shutil_get_terminal_size
๋ฅผ ๊ณต๊ธํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@Carreau fwiw ์ฌ๊ธฐ์ pip ๋๋ python ๋ฒ๊ทธ๊ฐ ์๊ฑฐ๋ ์ด๋ฆฌ์์ ์ง์ ํ ๊ฒ ๊ฐ๊ฑฐ๋ ๋ ๋ค์ผ ์ ์์ต๋๋ค. ์ข ๋ ์ง์์ด ํ๋ถํ ํ ์ฌ๋๋ค์ ์ง๋์น ๊ฒ์ ๋๋ค.
์ค์ ๋ก ์กด์ฌํ์ง ์๋ backports
ํจํค์ง๋ฅผ ์ฐพ๋ ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์
๋๋ค. ๋ช๋ช ๋ถ๋ค์ด ๊ทธ๋ฐ ๋ด์ฉ์ ๋ณด๊ณ ํ์
จ๋๋ฐ ์ด๋์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ ๋ฅผ ์คํํ ์ ์์ต๋๊น? ์ํฅ์ ๋ฏธ์น ์ ์๋ .pkg
๋ฐ .pth
ํ์ผ์ ์ฐพ์๋ณด์ญ์์ค.
๋ด ์์คํ
์ @Carreau ์์ ๋ฌธ์ ๋ configparser
๋ชจ๋์ ์กด์ฌ๋ก ๋ฐํ์ก์ต๋๋ค.
pde<strong i="8">@damoclid</strong>:~/aip$ sudo grep backport `locate *.pth`
/usr/local/lib/python2.7/dist-packages/configparser-3.5.0-nspkg.pth:import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('backports',));ie = os.path.exists(os.path.join(p,'__init__.py'));m = not ie and sys.modules.setdefault('backports', types.ModuleType('backports'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
pde<strong i="9">@damoclid</strong>:~/aip$ pip freeze | grep configp
configparser==3.3.0.post2
pde<strong i="10">@damoclid</strong>:~/aip$ cd /usr/local/lib/
pde<strong i="11">@damoclid</strong>:/usr/local/lib$ find . -iname *configp*
./python2.7/dist-packages/configparser-3.5.0.dist-info
./python2.7/dist-packages/future/moves/configparser.py
./python2.7/dist-packages/future/moves/configparser.pyc
./python2.7/dist-packages/configparser.py
./python2.7/dist-packages/configparser-3.5.0-nspkg.pth
./python2.7/dist-packages/configparser.pyc
pde<strong i="12">@damoclid</strong>:/usr/local/lib$ sudo pip uninstall configparser
Not uninstalling configparser at /usr/lib/python2.7/dist-packages, outside environment /usr
pde<strong i="13">@damoclid</strong>:/usr/local/lib$ sudo rm -rf `find . -iname *configp*`
pde<strong i="14">@damoclid</strong>:/usr/local/lib$ ipython
Python 2.7.13 (default, Jan 19 2017, 14:48:08)
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]:
Do you really want to exit ([y]/n)? y
๋๋ฒ๊น ์ ๋์์ ์ฃผ์ @erikrose ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
#10587 ๊ณต๊ธ์ ์ฒด๋ก ๋ง๊ฐํฉ๋๋ค. ์ด ๊ฒ๋ค๊ณผ IPython 5.4๋ ๊ณง ์ถ์๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@oschow ์ด๊ฒ์ _should_ ์ผ๋ฐ์ ์ผ๋ก ์๋ํฉ๋๋ค.