Setuptools ๊ณต๊ธ์ ํตํ pip๊ฐ pypa/setuptools#885์ ๋ณด๊ณ ๋ ๋ฌธ์ ๋ฅผ ์ ๋ฐํ๋ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค(๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ ์ฌ์ฉ์์ ๋ํ ์ง์์ ์ธ ๋ณด๊ณ ์ ๊ด๋ จ์ด ์์ ์ ์์). ๋ค์์ develop-inst-no-deps
๋จ๊ณ๋ฅผ ์๋ฃํ ํ ํ
์คํธ ์คํ ์ค์ pip freeze
๊ฐ tox
์ํด ํธ์ถ๋ ๋ ๋ฐ์ํ๋ ์ญ์ถ์ ์
๋๋ค.
Traceback (most recent call last):
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/bin/pip", line 7, in <module>
from pip import main
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/__init__.py", line 26, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/utils/__init__.py", line 27, in <module>
from pip._vendor import pkg_resources
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
<strong i="13">@_call_aside</strong>
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
dist.activate(replace=False)
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/Users/jaraco/Dropbox/code/yg/support/yg.piistore/.tox/python/lib/python3.6/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
์ ์ผํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ setuptools๋ฅผ 31.0.1 ์ด์์ผ๋ก ๋ค์ ๊ณต๊ธํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ด setup.py ์คํฌ๋ฆฝํธ์ ๋ฒ๊ทธ๊ฐ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ํจํค์ง ์ด๋ฆ์๋ ์ ์ ํ ํ๋ก์ ํธ ์ด๋ฆ ๋์ ์ด๋ฆ์ ๋ํ ์ ์ฌ์ ์ธ '๊ณจ๊ฒฉ'์ด ์์์ต๋๋ค. ์ด๋ฅผ ์์ ํ ํ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์๋ง๋ ์ ์ ํ ํ๋ก์ ํธ ์ด๋ฆ yg.piistore
์ด skeleton
์ ๋ค๋ฅธ ์ ๋ ฌ ์์๋ก ๋ํ๋๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํจํค์ง์ ์์์ ์ด๋ฆ ๋ฐ ์ข
์์ฑ์ ๋ฐ๋ผ ์ผ๋ถ ์ฌ์ฉ์์๊ฒ ์ด ๋ฌธ์ ๊ฐ ์กด์ฌํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์๋ง๋ ์ด ๋ฌธ์ ๋ ์ค์น ์ค์ธ ํจํค์ง๊ฐ ๋ค์์คํ์ด์ค๊ฐ ์๋ ํจํค์ง์ด์ง๋ง ๋ค์์คํ์ด์ค ํจํค์ง์ ์์กดํ๋ ๊ฒฝ์ฐ์๋ง ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค( '_NamespacePath' object has no attribute 'sort'
). ๋ด ์ค์ ์ ๋ํ ๋ค์ ์ธ๋ถ ์ ๋ณด๊ฐ ์ ์ฉํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ธ ๊ฐ์ง ํจํค์ง๊ฐ ์ฌ์ฉ ์ค์ ๋๋ค(์ฒซ ๋ฒ์งธ ํจํค์ง๋ ์ค์ํ์ง ์์ ์ ์์). ํจํค์ง ์ด๋ฆ์ ์ต๋ช ์ผ๋ก ์ฒ๋ฆฌํ์ต๋๋ค.
acme.foo
: ์ด๊ฒ์ ๋ด ํ๋ ๋์คํฌ์ ๋๋ ํ ๋ฆฌ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ ํจํ ๊ฒฝ๋ก์
๋๋ค./path/to/acmefoo/
๋ ํ๋ก์ ํธ ๋ฃจํธ์
๋๋ค./path/to/acmefoo/acme/foo
๋ ํจํค์ง์ ์์ค ์ฝ๋๋ฅผ ํฌํจํฉ๋๋ค./path/to/acmefoo/acme/__init__.py
์๋ ๋ค์ ํ
์คํธ๋ง ํฌํจ๋ฉ๋๋ค. __import__('pkg_resources').declare_namespace(__name__)
/path/to/acmefoo/setup.py
์๋ packages=["acme", "acme.foo"], namespace_packages=["acme"]
(๋ฌผ๋ก setuptools
๊ฐ ์๋ distutils
).acme.bar
: ์ด์ ์ ์ฌํ๋ฉฐ setup.py
์ entrypoints={'console_scripts': ['ac_bar = acme.bar.main:main']}
๊ฐ ํฌํจ๋์ด ์์ต๋๋ค(์ด๋ฅผ ์ ๊ฑฐํ ํ์๋ ์์ต๋๋ค).acme.baz
: setup.py
๊ฐ ์๋ค๋ ์ ์ ์ ์ธํ๋ฉด ๋น์ทํฉ๋๋ค.pip install /path/to/acmefoo/
์คํํ์ฌ acme.foo
๋ฐ acme.bar
์ง์ ์ค์นํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ฌ ์์
๋๋ ํ ๋ฆฌ๋ฅผ acme.baz
๋ก ๋ณ๊ฒฝํ๊ณ pip freeze
๋๋ ac_bar
๋ฅผ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ช ๊ฐ์ง ์ถ๊ฐ ์ฌํญ:
/path/to/acmebaz/acme/__init__.py
(์ฆ, pip install
ed๊ฐ ์๋ ํจํค์ง)๋ฅผ ์ญ์ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.setuptools==28.0.0
์ด ์ ์ฒด ์ ์ฐจ๋ฅผ ์ํํด๋ ์ค๋ฅ๊ฐ ์ฌํ๋์ง ์์ต๋๋ค .acme.foo
๋ฐ acme.bar
with setuptools==32.3.1
๋ฅผ ์ค์นํ ๋ค์ setuptools==28.0.0
๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ ๋ค์ pip freeze
in /path/to/acmebaz
, ๋๋ ์ค๋ฅ๋ฅผ๋ฐ์ ์ ์๋์. ๋ฐ๋ผ์ ์ค์ํ ๊ฒ์ ํ์ฌ ํ์ฑํ๋ ๋ฒ์ ์ด ์๋๋ผ pip
์ค์น์ ์ฌ์ฉ๋ setuptools
์ ๋ฒ์ ์
๋๋ค.์ค์นํ ๋ค์ setuptools๋ฅผ ๋ค์ด๊ทธ๋ ์ด๋ํ ๋ค์ pip freeze๋ฅผ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ๋์์ ๊ฑฐ์ ํ์คํ pypa/setuptools#250์ฉ Setuptools v31์ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค. ํนํ https://github.com/pypa/setuptools/commit/7e25fd910d1ff5259c0768d3b54a9bf03bce4279 ๋ nspkg-pth
ํ์ผ์ด ์์ฑ๋๋ ๋ฐฉ์์ ์
๋ฐ์ดํธํ์ต๋๋ค. ์ฌ๊ธฐ์ _NamespacePath
๊ฐ์ฒด๊ฐ ์์ฑ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ sort
์ค๋ฅ๊ฐ pkg_resources
์์ ํด๊ฒฐ๋ Setuptools 31.0.1 ์๋ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด ์ญ์ถ์ ์์ ๋ณผ ์ ์๋ฏ์ด ์์ง ํด๋น ์์ ์ฌํญ์ด ์๋ ๊ณต๊ธ์
์ฒด ๋ฒ์ ์ pkg_resources์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์์ต๋๋ค.
ํฅ๋ฏธ๋กญ๊ณ ์์ง ์ดํดํ์ง ๋ชปํ๋ ๊ฒ์ acme(baz์ฉ)์์ ๋ค์์คํ์ด์ค ํจํค์ง ์ ์ธ์ ์ญ์ ํ๋ฉด ์ค๋ฅ๊ฐ ์ค์ง๋๋ ์ด์ ์ ๋๋ค. ๊ทธ๊ณณ์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์คํ์ง ์์ง๋ง ์๋ง๋ ๋ ์กฐ์ฌํ ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค.
ํ์ด์ฌ ๋ฒ์ ํ์ด์ฌ 3.6.0b2
ํ ๋ฒ์ 9.0.1
์ด์ ์ฒด์ Ubuntu 16.10(4.9.0-1.1-liquorix-amd64 #1 ZEN SMP PREEMPT liquidix 4.9-3(2017-01-07) x86_64 x86_64 x86_64 GNU/Linux)
```์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/usr/lib/python3.6/runpy.py", 183ํ, _run_module_as_main
mod_name, mod_spec, ์ฝ๋ = _get_module_details(mod_name, _Error)
_get_module_details์ ํ์ผ "/usr/lib/python3.6/runpy.py", 142ํ
return _get_module_details(pkg_main_name, ์ค๋ฅ)
_get_module_details์ ํ์ผ "/usr/lib/python3.6/runpy.py", 109ํ
__๊ฐ์ ธ์ค๊ธฐ__(ํจํค์ง_์ด๋ฆ)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/__init__.py", 26ํ,
pip.utils์์ get_installed_distributions ๊ฐ์ ธ์ค๊ธฐ, get_prog
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/utils/__init__.py", 27ํ,
pip._vendor์์ pkg_resources ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", ์ค 3018,
@_call_aside
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 3004ํ, _call_aside
f( ์ธ์, * kwargs)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 3046ํ, _initialize_master_working_set
dist.activate(๊ต์ฒด=๊ฑฐ์ง)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", ๋ผ์ธ 2578, ํ์ฑํ
์ ์ธ_๋ค์์คํ์ด์ค(ํจํค์ง)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 2152ํ, ์ ์ธ_์ด๋ฆ ๊ณต๊ฐ
_handle_ns(ํจํค์ง ์ด๋ฆ, ๊ฒฝ๋ก_ํญ๋ชฉ)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 2092ํ, _handle_ns
_rebuild_mod_path(๊ฒฝ๋ก, ํจํค์ง ์ด๋ฆ, ๋ชจ๋)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 2121ํ, _rebuild_mod_path
orig_path.sort(ํค=position_in_sys_path)
AttributeError: '_NamespacePath' ๊ฐ์ฒด์ 'sort' ์์ฑ์ด ์์ต๋๋ค.
sys.excepthook์ ์ค๋ฅ:
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
apport_excepthook์ ํ์ผ "/usr/lib/python3/dist-packages/apport_python_hook.py", 63ํ
apport.fileutils์์ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ๋ฅ_ํจํค์ง, get_recent_crashes
ํ์ผ "/usr/lib/python3/dist-packages/apport/__init__.py", 5ํ,
fromapport.report import ๋ณด๊ณ ์
ํ์ผ "/usr/lib/python3/dist-packages/apport/report.py", 30ํ,
import.fileutils
ํ์ผ "/usr/lib/python3/dist-packages/apport/fileutils.py", 23ํ,
appport.packaging_impl์์ impl์ ํจํค์ง์ผ๋ก ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/usr/lib/python3/dist-packages/apport/packaging_impl.py", 23ํ,
์์
์ํํธ
ํ์ผ "/usr/lib/python3/dist-packages/apt/__init__.py", 23ํ,
apt_pkg ๊ฐ์ ธ์ค๊ธฐ
ModuleNotFoundError: 'apt_pkg'๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
์๋ ์์ธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "/usr/lib/python3.6/runpy.py", 183ํ, _run_module_as_main
mod_name, mod_spec, ์ฝ๋ = _get_module_details(mod_name, _Error)
_get_module_details์ ํ์ผ "/usr/lib/python3.6/runpy.py", 142ํ
return _get_module_details(pkg_main_name, ์ค๋ฅ)
_get_module_details์ ํ์ผ "/usr/lib/python3.6/runpy.py", 109ํ
__๊ฐ์ ธ์ค๊ธฐ__(ํจํค์ง_์ด๋ฆ)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/__init__.py", 26ํ,
pip.utils์์ get_installed_distributions ๊ฐ์ ธ์ค๊ธฐ, get_prog
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/utils/__init__.py", 27ํ,
pip._vendor์์ pkg_resources ๊ฐ์ ธ์ค๊ธฐ
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", ์ค 3018,
@_call_aside
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 3004ํ, _call_aside
f( ์ธ์, * kwargs)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 3046ํ, _initialize_master_working_set
dist.activate(๊ต์ฒด=๊ฑฐ์ง)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", ๋ผ์ธ 2578, ํ์ฑํ
์ ์ธ_๋ค์์คํ์ด์ค(ํจํค์ง)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 2152ํ, ์ ์ธ_์ด๋ฆ ๊ณต๊ฐ
_handle_ns(ํจํค์ง ์ด๋ฆ, ๊ฒฝ๋ก_ํญ๋ชฉ)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 2092ํ, _handle_ns
_rebuild_mod_path(๊ฒฝ๋ก, ํจํค์ง ์ด๋ฆ, ๋ชจ๋)
ํ์ผ "/usr/local/lib/python3.6/dist-packages/pip/_vendor/pkg_resources/__init__.py", 2121ํ, _rebuild_mod_path
orig_path.sort(ํค=position_in_sys_path)
AttributeError: '_NamespacePath' ๊ฐ์ฒด์ 'sort' ์์ฑ์ด ์์ต๋๋ค.
```
๋๋ ๋ํ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. setuptools v28๋ก ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ์๋ํ์ง๋ง ํด๊ฒฐ๋์ง ์์์ต๋๋ค. ๋ํ ์ด ์ค๋ฅ๋ Python 3.5.2์์ ํ์ ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋๋ pip๊ฐ Heroku์์ ์ด ์ค๋ฅ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๋ค. Heroku ๋ด์์ Python 3.6์์ ์คํ๋๋ Django ์ฑ์ด ์๊ณ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ ์๊ฒ ํด๊ฒฐ์ฑ
์ ๋ค์์คํ์ด์ค ํจํค์ง๋ฅผ ํฌ๊ธฐํ๋ ๊ฒ์ด์์ต๋๋ค. acme/foo
๋ ์ด์ acme_foo
์
๋๋ค. Python ์ธํ๋ผ ๊น์์ด ๋ฌปํ ์๋ ๋ช ๊ฐ์ง ์ฝ๋ ์ผ์ด์ค๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค(Cython/ํ์ฅ ๋ชจ๋ ์ง์ ๋ถ์กฑ์ ๋ ๋ค๋ฅธ ๋ฌธ์ ์
๋๋ค). ์ด๊ฒ์ด ๋ง์ง๋ง ๋นจ๋์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ด๋ฌํ ์คํจํ ํ
์คํธ์ ๊ด๋ จ์ด ์์ต๋๋ค. ์์์ ๋ฌธ์ ๊ฐ ๋ค์์คํ์ด์ค ํจํค์ง๊ฐ ํ์ํ ๋น๋ค์์คํ์ด์ค ํจํค์ง๋ก ๊ฒฉ๋ฆฌ๋ ์ ์๋ค๊ณ ๊ฐ์ ํ์ง๋ง ์ด ์์ ๋ ๋์ผํ ๋ค์์คํ์ด์ค( pmxbot
)์ ๋ค๋ฅธ ๋ค์์คํ์ด์ค ํจํค์ง๊ฐ ํ์ํ ๋ค์์คํ์ด์ค ํจํค์ง( pmxbot.rss
)์ ๋ํ ๊ฒ์
๋๋ค pmxbot
).
@jaraco ๊ฐ์ ์ง๋ฌธ์ ๋ง๋ฌ๋๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด pip
๋ ๋ชจ๋ ๊ฒ์ ์ค์นํ๋ ๋ฐ ์๋ํ์ง ์์ต๋๋ค. ๋์ ์ค์ ! :์๊ธ ์ ํธ:
ํ์ด์ฌ
3.5.2
ํ9.0.1
์ค์ ๋๊ตฌ34.2.0
>> pip3
Traceback (most recent call last):
File "/usr/bin/pip3", line 7, in <module>
from pip import main
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
from pip._vendor import pkg_resources
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
<strong i="15">@_call_aside</strong>
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_t
dist.activate(replace=False)
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/usr/local/python3.5.2/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
์ฌ๊ธฐ์์๋ ๋์ผํ ์ค๋ฅ๋ก ๋ด ํ์ด ๊นจ์ ธ ๋ณด์ ๋๋ค. ๋๋ pip์ ์ฌ์ฉ์ ์ค์น๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
~ํ์ด์ฌ ์ญ์ถ์ ์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):ํ์ผ "/home/stavros/.local/bin/pip", 7ํ,
๋์ค์ setuptools ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ๋ ๋ง์ ํจํค์ง(ํนํ ๋ฐํด)๊ฐ ๋ฆด๋ฆฌ์ค๋จ์ ๋ฐ๋ผ ์ด ๋ฌธ์ ๊ฐ ๋ ๋๋ฆฌ ํผ์ง ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์ ์คํธ๋ฆผ ๋ฌธ์ ์์ ๋ ๋ง์ ๋ถ์์ ์ํํ์ง๋ง pip์์ pkg_resources๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ ์ธ์๋ ์์ ์ฌํญ์ด ์์ต๋๋ค.
๋ค์ ์ฌ์์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Traceback (most recent call last):
File "/python/v3/Libraries/pip/Upgrade.py", line 4, in <module>
import pip
File "/home/eric/.local/lib/python3.5/site-packages/pip/__init__.py", line 26, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/home/eric/.local/lib/python3.5/site-packages/pip/utils/__init__.py", line 27, in <module>
from pip._vendor import pkg_resources
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
<strong i="9">@_call_aside</strong>
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
dist.activate(replace=False)
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/home/eric/.local/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
ํจํค์ง ์ ๊ทธ๋ ์ด๋์ ์ฌ์ฉ๋๋ Python ์ฝ๋:
#!/usr/bin/python3
# -*- coding: utf8 -*-
import pip
import subprocess
try:
for distribution in pip.get_installed_distributions():
subprocess.call('python3 -m pip install --upgrade ' + distribution.project_name, shell=True)
except OSError:
print('Permission denied')
๋ด pip๋ conda
์ค์น ํ ๋ค์ ์๋ํฉ๋๋ค. https://conda.io/docs/install/quick.html ๋ฐ https://doc.scrapy.org/en/latest/intro/install.html# ์ฐธ์กฐ ์๋ํด ๋ณผ ์์๋
ํด๋น ๋ค์์คํ์ด์ค์ ๋ค๋ฅธ ํจํค์ง๊ฐ ์ค์น๋์ด ์๊ณ ํด๋น ํจํค์ง ์ค ํ๋์ -nspkg.pth
์ด ์๋ ๊ฒฝ์ฐ ๋ค์์คํ์ด์ค ํจํค์ง๊ฐ ํฌํจ๋ ๋๋ ํ ๋ฆฌ์์ pip install
๋ฅผ ์คํํ ๋ ์ด ๋ฌธ์ ๊ฐ ์ ์ ๋ ๋๋ฆฌ ํผ์ ธ ์๊ณ ์์ ์ ์ผ๋ก ๋ณต์ ํ ์ ์๊ฒ ๋์์ต๋๋ค -nspkg.pth
๋ฆ์ setuptools์์ ๋น๋์
ํธ์ง: ์ด ๊ธ์ ๊ฒ์ํ๊ฒ ๋ง๋ ๋ฌธ์ ๋ ํ ์คํธ ์ค์ธ ํจํค์ง์ ๊ฒฐํจ์ ์์ ํ์ฌ ๋ค์ ํด๊ฒฐ๋์์ต๋๋ค.
@jaraco ๋ ๋ด ๋ฌธ์ (#4309)๊ฐ ์ด๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํด ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ๋ฅผ ์ง์ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด ๊ฒฝ์ฐ ๋์ผํ ๋ค์์คํ์ด์ค(minchin.text)์ ๋ค๋ฅธ namespace-d ํจํค์ง์ ์์กดํ๋ namespace-d ํจํค์ง(minchin.releaser)๋ฅผ ์ค์นํ๋ ค๊ณ ํฉ๋๋ค.
๋๋ ์ ํํ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ง๋ง pip3 ๋ฒ์ ์ ๋ฌป๋ ๊ฒ์กฐ์ฐจ ์คํจํ๋ ๋ณต์กํ ์ผ์ ์๋ํ ํ์๊ฐ ์์ต๋๋ค.
$ python3 /usr/local/bin/pip3 --version
Traceback (most recent call last):
File "/usr/local/bin/pip3", line 7, in <module>
from pip import main
File "/usr/local/lib/python3.5/dist-packages/pip/__init__.py", line 26, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/usr/local/lib/python3.5/dist-packages/pip/utils/__init__.py", line 27, in <module>
from pip._vendor import pkg_resources
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3018, in <module>
<strong i="6">@_call_aside</strong>
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3004, in _call_aside
f(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 3046, in _initialize_master_working_set
dist.activate(replace=False)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2578, in activate
declare_namespace(pkg)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2152, in declare_namespace
_handle_ns(packageName, path_item)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2092, in _handle_ns
_rebuild_mod_path(path, packageName, module)
File "/usr/local/lib/python3.5/dist-packages/pip/_vendor/pkg_resources/__init__.py", line 2121, in _rebuild_mod_path
orig_path.sort(key=position_in_sys_path)
AttributeError: '_NamespacePath' object has no attribute 'sort'
apt-get
python3-pip
๋ฐ python3-setuptools
๋ก ์ฌ์ค์น๋ฅผ ์๋ํ์ง๋ง ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค.
๋ ์ด์ํ ํ๋์ pip3
์คํฌ๋ฆฝํธ๋ฅผ ๋ค๋ฅธ ์ธํฐํ๋ฆฌํฐ(์: ipython3
)๋ก ์คํํ๋ฉด ์๋ํ๋ค๋ ๊ฒ์
๋๋ค!
$ ipython3 /usr/local/bin/pip3 -- --version
pip 9.0.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)
@jaraco setuptools >= 31.0.1์ ๊ณต๊ธํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๊น?
๋ด ๊ฒฝ์ฐ์๋ @pradyunsg, vendoring setuptools์ 34.3.0 ๋๋ฅผ ์ํด ๊ทธ๊ฒ์ ํด๊ฒฐํ์ต๋๋ค.
์. eaccb88์ ์ฐธ์กฐํ์ญ์์ค.
@jaraco ๋ง์คํฐ์ ์๋์? ๊ด๋ จ ๋ณ๊ฒฝ ํญ๋ชฉ์ด ํ์๋์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ธ pip ๋ฒ์ ์ด ์์ต๋๊น? ์ฌ์ฉ์์๊ฒ "์ด ๋ฌธ์ ๊ฐ ์์ ๋ ๊ฒ์ผ๋ก ํ์๋ ๋๊น์ง pip XYZ๋ก ๋ค์ด๊ทธ๋ ์ด๋"ํ๋๋ก ์กฐ์ธํ ์ ์์ผ๋ฉด ์ ์ฉํ ๊ฒ์ ๋๋ค.
#4330 ์ฐธ์กฐ
sudo apt-get upgrade python-setuptools
๋๋ ์๋
sudo dpkg --get-selections | grep -E "^python" | grep install | cut -f1 | xargs apt-get --reinstall -y install
๋๋ ์ด๋ฌํ ํธ๋ฆญ์ ์๋ํ์ง๋ง ์ง๊ธ๊น์ง ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ด ๊ฒฌ๊ณ ํ๊ณ ์ ์ฉํ ์์ ์ฌํญ์ด ์์ต๋๋ค.
/path/to/usr/local/python3.5/dist-packages/
์์ pip/_vendor/pkg_resources/__init__.py
ํ์ผ์ ๋ํด 2121ํ์์ ๋ค์์ ๋ณ๊ฒฝํฉ๋๋ค.
orig_path.sort(key=position_in_sys_path)
~์ ํจ๊ป
try:
orig_path.sort(key=position_in_sys_path)
except AttributeError:
print("BUG: Is it bad if orig_path is not sorted correctly?")
์ด ์์ ์ฌํญ์ด ์๋ pip 9.0.2๋ง ์์ ์ ์์ต๋๊น? ์ต์ ๋ฒ์ ์ setuptools๊ฐ ๊ณต๊ธ๋ฉ๋๊น?
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ 9.0.1์ ๋ถ๊ธฐํ๊ณ @jaraco๊ฐ ์ธ๊ธํ ์์ ์ฌํญ์ ์ฒด๋ฆฌ ์ ํํ๊ณ 9.0.2์ ํ๊ทธ๋ฅผ ์ง์ ํ๊ณ ๋ฆด๋ฆฌ์คํ๊ณ ๋ค์ ๋ง์คํฐ์ ๋ณํฉํ๋ ๊ฒ์ ๋๋ค.
/cc @dstufft @xavfernandez
@Naereen ์ด ์ค๋ฅ๋ฅผ ์นจ๋ฌต์ํค๋ฉด ๋ค๋ฅธ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก str(e)
๋ ์ธ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@LoganDark ๋ฌผ๋ก , ๋ด "์์ "์ ๋ณํฉ๋๊ฑฐ๋ ์ฌ์ฉ๋์ง ์์์ผ๋ฉฐ ๋ ๊นจ๋ํ ์๋ฃจ์
์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๊ธฐ๋ฅ์ ์ธ pip
๋ช
๋ น์ ๊ฐ์ ํ ์ฌ์ฉํ์ต๋๋ค.
@Naereen ๊ธ์์. ๋๋ ๋จ์ง rm -rf ~/.local/lib/python3.6/site-packages/*
ํ๊ณ ํจ๊ณผ๊ฐ ์์๋ค.
๋ฌผ๋ก ๋ชจ๋ ์ฌ๋์๊ฒ ํด๊ฒฐ์ฑ ์ด ๋ ์๋ ์์ต๋๋ค. ์ ๊ฑฐํ๊ณ ์ถ์ง ์์ ํน์ ํจํค์ง๊ฐ ์ค์น๋์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ด๊ฐ ์์ด๋ฒ๋ฆฐ ๋ชจ๋ ๊ฒ์ ์ฝ๊ฒ ๋ค์ ์ค์นํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ํ๋ค
๋ด virtualenv์์ pip๋ก ์๋ฌด ๊ฒ๋ ํ ์ ์์ต๋๋ค. pip
์
๋ ฅํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ด virtualenv์ easy_install pip
๋ก ์ธํด ๋ค์ ์๋ํ ์ ์๊ฒ ๋์์ง๋ง ์ค์น๊ฐ ๋๋ ๋ ์ค๋ฅ๊ฐ ๊ณ์ ๋ํ๋ฉ๋๋ค.
์ด๊ฑฐ ๋ง์คํฐ์ ์์ด?
์๋์. ์ญ์ ๋ hotfix/issue-4216์ด๋ผ๋ ๋ถ๊ธฐ์ ์์์ต๋๋ค. b005a9b๋ ๊ฐ์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ธ pip ๋ฒ์ ์ด ์์ต๋๊น?
์ค๋ง. ์์์ ์ธ๊ธํ๋ฏ์ด ๋ฌธ์ ๋ Setuptools 31์ด -nspkg.pth ํ์ผ์ ํ์ฅ์ด ํ์ํ ๋ค์์คํ์ด์ค ํจํค์ง์์ setup.py develop
์ ๋ํ ์ง์์ ๋์
ํ์ ๋ ๋ฐ์ํ์ต๋๋ค. ์ด ๋ณ๊ฒฝ์ ๋ณธ์ง์ ์ผ๋ก ์ด์ ๋ฒ์ ์ pkg_resources๊ฐ ์ด ์๋ก์ด ํ์์ ์ง์ํ์ง ์์ ์ง์ํ ๊ฒ์์ ์๋ฏธํ์ต๋๋ค.
์ ๋ ฌ ํธ์ถ์ด ์ํ๋ ์์น ์ด์ ์ ์ด์ ๋ฒ์ ์ setuptools๋ฅผ ๊ณต๊ธํ๋ ์ด์ ๋ฒ์ ์ pip๊ฐ ์์ ์ ์์ต๋๋ค.
์ด ์์ ์ฌํญ์ด ์๋ pip 9.0.2๋ง ์์ ์ ์์ต๋๊น? ์ต์ ๋ฒ์ ์ setuptools๊ฐ ๊ณต๊ธ๋ฉ๋๊น?
์ด๊ฒ์ ๋ด๊ฐ ๋ ผํ์์ด ์ญ์ ๋ ํซํฝ์ค ๋ถ๊ธฐ๋ก ์ ์ํ ๊ฒ์ ๋๋ค. ๋ด ํ๋ก์ ํธ๋ผ๋ฉด ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ์ต๋๋ค.
์ด ๋ฒ๊ทธ๋ ์ด ์ค๋ ๋์์ ๋ณด๊ณ ๋์์ต๋๋ค. https://github.com/opencivicdata/python-opencivicdata-django/issues/80
@palewire ์๋ ค ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ฆ, ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐํ๋ ค๊ณ ํฉ๋๋ค ...๋ณ๋ก ์ค์ํ์ง ์์ต๋๋ค.
์คํจ๋จธ๋ ์ฃ์กํฉ๋๋ค!
๊ฑฐ๊ธฐ์์ ์ฐ๋ฆฌ์ ๋์์ ๊ณํํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ์ธ์ ์์ ๋ ์ง ์ ์ ์์ต๋๊น? ์งํํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ด๋ฒ ์ฃผ๋ง์ 9.0.2๋ฅผ ์๋ฅด๋ ค๊ณ ํฉ๋๋ค.
์ฌ๊ธฐ์ ์ฑ๊ฐ์๊ฒ ํ๋ ค๋ ๊ฒ์ ์๋์ง๋ง ์ด ๋ฌธ์ ์ ๋ํ ์
๋ฐ์ดํธ๊ฐ ์์ต๋๊น? tox
์ฌ์ฉํ๋ CI ํ๊ฒฝ์ด ์๊ณ python3.6์ฉ์ผ๋ก ๋น๋ํ๋ ค๊ณ ํ ๋ ์คํจํฉ๋๋ค. ๋ก์ปฌ์์ python3.6 ํ๊ฒฝ์ ํ์ฑํํ๊ณ easy_install pip
์๋์ผ๋ก ์คํํ์ฌ ์๋ํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ CI ํ๊ฒฝ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ฌ์ ํ ๊นจ์ง ํ์ด ์์ผ๋ฉฐ Naereen์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ชจ๋ ์๋๋ฆฌ์ค์์ ์๋ํ์ง ์์ต๋๋ค(์๋ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค). ์งํ ์ํฉ @dstufft ?
SOS: ์๋ค์, ๋ ํฐ ๊ณค๊ฒฝ์ ๋น ์ก์ด, ์ ๋ฐ, ๋์์ค! ๋ด virtualenv๋ฅผ ํ์ฑํํ๋ ค๊ณ ํ ๋ ๊ธด ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
Traceback (most recent call last):
File "/anaconda/bin/conda", line 6, in <module>
sys.exit(conda.cli.main())
File "/anaconda/lib/python3.6/site-packages/conda/cli/main.py", line 151, in main
activate.main()
File "/anaconda/lib/python3.6/site-packages/conda/cli/activate.py", line 118, in main
from conda.utils import shells
File "/anaconda/lib/python3.6/site-packages/conda/utils.py", line 13, in <module>
from .gateways.disk.read import compute_md5sum
File "/anaconda/lib/python3.6/site-packages/conda/gateways/disk/read.py", line 22, in <module>
from ...models.channel import Channel
File "/anaconda/lib/python3.6/site-packages/conda/models/channel.py", line 9, in <module>
from ..base.context import context
File "/anaconda/lib/python3.6/site-packages/conda/base/context.py", line 19, in <module>
from .._vendor.auxlib.path import expand
File "/anaconda/lib/python3.6/site-packages/conda/_vendor/auxlib/path.py", line 8, in <module>
import pkg_resources
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2985, in <module>
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2971, in _call_aside
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 3013, in _initialize_master_working_set
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2544, in activate
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2118, in declare_namespace
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2058, in _handle_ns
File "/anaconda/lib/python3.6/site-packages/setuptools-27.2.0-py3.6.egg/pkg_resources/__init__.py", line 2087, in _rebuild_mod_path
AttributeError: '_NamespacePath' object has no attribute 'sort'
ํ์ด์ฌ 3.6
ํ 9.0.1
๋งฅ 10.6
@Mika15 ์ด๊ฒ์ ๋ณด๋ฅ ์ค์ธ pip 9.0.2 ๋ฆด๋ฆฌ์ค์์ ์์ ๋ ์์ ์ ๋๋ค.
์ฐ๊ฒฐ๋ ํฐ์ผ ์์ ์ต์ ๋ง์คํฐ ์ฝ๋๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.
pip install -I https://github.com/pypa/pip/archive/master.zip#egg=pip
_์ฐธ๊ณ :_ Ubuntu์์๋ ์์ ๋ช
๋ น( rm -r ~/.local/lib/python3.5/site-packages
)์ ์คํํ๊ธฐ ์ ์ ์ฌ์ฉ์ ์ฌ์ดํธ ํจํค์ง๋ฅผ ์ญ์ ํด์ผ ํ์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ pip
๋ช
๋ น์ ์ ํ ์คํํ ์ ์์์ต๋๋ค. ๋ง์นจ๋ด ์๋ํ๋ ์ ์ผํ ํด๊ฒฐ์ฑ
์ dist-packages์์ pip๋ฅผ ์ ๊ฑฐํ ๋ค์:
git clone https://github.com/pypa/pip.git
cd pip
python3.6 setup.py install
๊ทธ๋ฐ ๋ค์ ์๋ํ๊ธฐ ์์ํ์ต๋๋ค.
@cas-- ๋ณด๋ฅ ์ค ํ์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? ๋ง์ง๋ง ๋ง์ด๋ 9 ๋ฆด๋ฆฌ์ค๋ 4์ผ์ด ๊ฑธ๋ ธ์ต๋๋ค. ;) .
Windows์์ ๋์ผํ ์ค๋ฅ, PyCharm๊ณผ ํจ๊ป Anaconda๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค ๋ ์ ํํ ์ค๋ฅ๊ฐ ๋ํ๋ฉ๋๋ค. @Mika15 ์ ๋ฌธ์ ์ ๋น์ทํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@cas-- 9.0.2 ๋ฆด๋ฆฌ์ค์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
์ ๋ ์ด ํ๋ก์ ํธ์ ๊ฐ๋ฐ์๊ฐ ์๋๋๋ค. '๋๋ฌด'๋ผ๋ ๊ธ์ ์ํฉ์ ์ค๋ช ํ๊ณ ์์์ต๋๋ค.
pip๋ฅผ ๋ง์คํฐ pip 10.0.0.dev0 (python 3.6)
์
๊ทธ๋ ์ด๋ํ์ง๋ง ์ฌ์ ํ ์คํจํฉ๋๋ค(ํจํค์ง dvc
).
setuptools
๋ฅผ 35๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค.
Nixpkgs์์ ์ฐ๋ฆฌ๋ 36.0.1์์ setuptools
์์ ์ ๊ณตํ ๋ฒ์ ์ผ๋ก ๊ณต๊ธ์
์ฒด pkg_resources
๋ฅผ ์
๋ฐ์ดํธ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
@ZhukovGreen ์ ์๋ฃจ์ ์ด ์ ์๊ฒ
sudo rm -r pip
sudo rm -r pip-9.0.1.dist-info
๋๋ pip 9.0.1์ ๋ํ ํจ์น๋ฅผ ๋ง๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ณต๊ธ์
์ฒด setuptools
์
๋ฐ์ดํธํ์ต๋๋ค. ํจ์น๋ ํ์ ์ป๊ณ ์ถ์ ์ฌ๋์ https://github.com/pradyunsg/pip/tree/hotfix/9.0.2 ์์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค
pip install --ignore-installed --pre "https://github.com/pradyunsg/pip/archive/hotfix/9.0.2.zip#egg=pip"
์ถ์ : ์ ๋ pip์ ํต์ฌ ๊ฐ๋ฐ์๊ฐ ์๋๋ผ ์ด ํจ์น๋ฅผ ๋ง๋ค ์๊ฐ์ด ์๋ ์ฌ๋์ผ ๋ฟ์ ๋๋ค.
3๋์ 2๋์ ์ปดํจํฐ์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง๋ง pycharm 2017.1.4์์ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ ๋๋ง ๋ฐ์ํ์ต๋๋ค. ๋ช ๋ น์ค์์ pip๋ ๋ฌธ์ ์์ด ์๋ํฉ๋๋ค. ๋๋ ์ฌ์ฉํ๋ค:
Windows 7.1/8.1 64๋นํธ
ํ์ด์ฌ 3.6.1 64๋นํธ
ํ 9.0.1
์ค์ ๋๊ตฌ 36.0.1
์ด๋ค ์์ด๋์ด?
์๋ค ์,
์ ๋ ๊ตฌ๊ธ ํ์ผ๋ก ํ์ฌ ๋
ผ๋ฌธ์ ์ํด ์ผํ๊ณ ์์ต๋๋ค. ๊ต์๋์ ์ ๊ฐ ํ๋ก์ ํธ๋ฅผ ์ข
๋ฃํ๊ธฐ๋ฅผ ์ํ์ญ๋๋ค. ์ ๋ 4์๋ถํฐ ๊ทธ ์ผ์ ํ๊ณ ์์ต๋๋ค. ๋์์ฃผ์ธ์. ๊ทธ๋ ์ง ์์ผ๋ฉด ์กธ์
์ 6๊ฐ์ ์ฐ๊ธฐํด์ผ โโํฉ๋๋ค. ์์ง๊น์ง ์๋ฌด๋ ๋๋ฅผ ๋์ธ ์ ์์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค : AttributeError: '_NamespacePath' ๊ฐ์ฒด์ 'sort' ์์ฑ์ด ์์ต๋๋ค.
๋๋ ๋น์ ์ด ์ด ํ ๋ก ์์ ์ด ๋ชจ๋ ๊ฒ๊ณผ ๋น์ทํ ๋ฌธ์ ์ ์ฌ์ฉ์๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ์์ต๋๋ค. ์ ์๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์๋ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ํญ์ ์ค๋ฅ ๋๋ ๊ตฌ๋ฌธ ์ค๋ฅ ๋๋ ๋ช
๋ น์ ์ฐพ์ ์ ์์ต๋๋ค. ์ ๋ ๋งฅ์์ ์ผํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Windows์ ์น๊ตฌ๋ค์์ ์๋ํ์ง๋ง ํญ์ ๊ฐ์ ๋ฌธ์ ์์ต๋๋ค. ๋๋ ์ฝ๋ฉ์ ์ํด๊ณ ๊ฒฝํ์ด ์ ํ ์๋ค. ํ์ง๋ง ์ด๋ฒ ํ๊ธฐ์๋ ์ ๋ง ๋๋ด์ผ ํด์.
๋๋ ํํ ๋ฆฌ์ผ์ ์๋ํ๊ณ ๊ทธ๋ค์ด ํ ๋ชจ๋ ๊ฒ์ ๋จ๊ณ๋ณ๋ก ์ํํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๊ทธ๋ค์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ง๋ง ๋์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ต๋๋ค.
์ง์์ด ํ์ํฉ๋๋ค. ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๋ง์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@Fouf92 ์์ ์ ๋๊ธ ์ฝ์ด๋ณด์ จ๋์? ํจํค์ง ๋ฅผ ์ค์น
์๋
ํ์ธ์ @arthur-tacca, ์ ๋ ์ด ๋ชจ๋ ๊ฒ์ด ์ ๋ง ์๋กญ์ต๋๋ค. ์์์ ์์ฑํ ์ ์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์๋ ค์ฃผ์๊ฒ ์ต๋๊น? ๋๋ ๋ง์ ํฌ๋ผ์ ์ฝ์๊ณ ์ง๊ธ ๋๋ ํผ๋์ค๋ฌ์ด ๋
ผ๋ฆฌ๋ก ๋ค๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ต๋๋ค ๐
์ ๋ง ๋์์ด ๋ ๊ฒ์
๋๋ค. ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
picharm ์ต์ ๋ฒ์ ์ ์ค์นํ๋๋ฐ ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ์ฃ์กํฉ๋๋ค ๐
@Fouf92 ์ด ๋ฌธ์ ์๋ ๋ช ๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋์ด๋์ด ์์ต๋๋ค.
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ pip์ ๊ฐ๋ฐ ๋ฒ์ ์ ์ค์นํ๋ ๊ฒ์ ๋๋ค(git์ด ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํ๊ณ ํฐ๋ฏธ๋์์ ๋ค์์ ์คํ).
git clone https://github.com/pypa/pip.git
cd pip
python3.6 ./pip/__main__.py install .
์ด ๋ฌธ์ ์ ๋ํ ์์ ์ฌํญ์ด ์๋ pip ๋ฒ์ ์ ์ค์นํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์๋
ํ์ธ์ @pradyunsg ๋น ๋ฅธ ์๋ต๊ณผ ๋์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์์
์ค์
๋๋ค.
๋๋ ๋น์ ์ ๋จ๊ณ๋ฅผ ์ํํ๊ณ ๋ชจ๋ ๊ฒ์ ์ฑ๊ณต์ ์ผ๋ก ์ค์นํ์ต๋๋ค.
๊ทธ๋ฌ๋์ด ์ฝ๋๋ฅผ ์คํํ ๋ :
python3 -m pip ์ค์น google-assistant-sdk[์ํ]
๊ฐ์ ๋ฌธ์ , ๋๋ ๋ด๊ฐ ๋ฌด์์ ์๋ชปํ๊ณ ์๋์ง ์ ๋ง๋ก ๋ชจ๋ฆ ๋๋ค.
์ฌ๋ฌ๋ถ ์ค ํ ๋ช ์ด ์ ๋ฅผ ๋์ธ ์ ์๋ค๋ฉด ํ ๋ทฐ์ด๋ก ์ด๋ํ์ฌ ์ฐ๋ฝ์ฒ๋ฅผ ๊ตํํ ์ ์์ต๋๋ค. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ๊ต์๋์ด ์ด๋ฒ ์ฃผ ๋ง์ ๋ด ๋ ผ๋ฌธ์ ๋ง๊ฐํ๊ณ ์ถ์ดํ์ ์ ๋๋ ๋ง์ ์๊ฐ๊ณผ ๋์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ ์๊ฒ๋ ์ ๋ง ์๊ธํฉ๋๋ค. ์ฌ๋ฌ๋ถ, ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!!
Hey ๋ ๋์ผ, ๋ค์ ํ ๋ฒ ๊ท์ฐฎ๊ฒ ํด์ ๋ฏธ์ํด. ๋๋ ๋ ์ด๋ธ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ฝ๊ณ ์ฌ๋๋ค์ด ์ ์ํ ๋จ๊ณ๋ฅผ ์๋ํ์ง๋ง ์ฌ์ ํ ๋์ผํ ๋ฌธ์ ์
๋๋ค.
๋๋ ์ด๊ฒ์ ํ์๋ก ํ๋ค: python3 -m pip install google-assistant-sdk[์ํ]
๊ทธ๋ฌ๋ ๋ด๊ฐ ๋ฌด์์ ์๋ํ๋ ๋๋ ํญ์ ๋ด๊ฐ ์์ ๊ฒ์ํ ๊ฒ์ ๋ฐ์ต๋๋ค. ์ ๋ฐ ๋์์ฃผ์ธ์ ์๊ฐ์ด ๊ธ์์ผ๋ฐ์ ์๋๋๋ฐ ์กธ์
์ ๋ฐ๋
์ฐ๊ธฐํด์ผ โโํ๊ณ ์ ๋ง ์ข์ ํ์ฌ์์ ์ ์๋ฅผ ์๊ฒ ๋ฉ๋๋ค...
@Fouf92 ์ด๊ฒ์ ๋ด ์ ์์ ๋๋ค.
1) virtualenv๋ฅผ ์ค์นํฉ๋๋ค. ๋ค์์ Mac์ฉ์ผ๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋งํฌ์ ๋๋ค. http://sourabhbajaj.com/mac-setup/Python/virtualenv.html
virtualenv๋ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ๋ "์์"๋ฅผ ๋ง๋ญ๋๋ค. ๋ชจ๋ ๊ฒ์ ์์คํ ์ ์ง์ ์ค์นํ๋ฉด ๊ฐ์ญ์ ์ํ์ด ์์ผ๋ฉฐ, ๋ฌด์ธ๊ฐ๊ฐ ๊ณ ์ฅ๋๋ฉด ์์คํ ์ ์ฒด๊ฐ ๋ง๊ฐ์ง๋๋ค.
2) ๋ค์๊ณผ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ญ๋๋ค.
virtualenv --python=`which python3` myenvname
์ด๊ฒ์ ๋น์ ์ ์ํด ํ์ด์ฌ 3 ํ๊ฒฝ์ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์์ ํ๋ ๋ชจ๋ ๊ฒ์ ํ์ด์ฌ 3์ ๋๋ค.
3) virtualenv๋ฅผ ํ์ฑํํ์ญ์์ค.
cd myenvname
source bin/activate
ํฐ๋ฏธ๋ ์ผ์ชฝ์ ๋๊ดํธ ์์ virtualenv ์ด๋ฆ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ํ๊ฒฝ์ ์์์ ์ ์ ์์ต๋๋ค.
(myenvname) Firass-MacBook-Pro: .....
4) pip install google-assistant-sdk[samples]
์ฑ๊ณต์ ์ผ๋ก ์ค์น๋์ด์ผ ํฉ๋๋ค. ๋ฐฉ๊ธ ๋ด ์ชฝ์์ ํ ์คํธํ์ผ๋ฉฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋ ํ์ธ์ @RomHartmann ์ง์ ํด์ฃผ์ ์
๋ด ๋ค์ ๋จ๊ณ๋ ์ฌํ๊ฒ๋ ๋ค์ ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์
๋๋ค. ๋ด๊ฐ ์ฌ๊ธฐ ์๋ ๋ชจ๋ ์ฌ๋๋ค์ ๊ท์ฐฎ๊ฒ ํ๋ค๋ ๊ฒ์ ์๋๋ค. ๋ง์ฝ ๊ทธ ์ผ์ ํ๋ ๊ฒ์ด ๋์๊ฒ ๊ทธ๋ ๊ฒ ์ค์ํ์ง ์๋ค๋ฉด ๊ทธ๋ ๊ฒ ํ์ง ์์ ๊ฒ์
๋๋ค.
๋ค์ ๋จ๊ณ์
๋๋ค. python3 -m googlesamples.assistant.auth_helpers โclient-secrets path\to\your\client_secret_XXX.apps.googleusercontent.com.json
๋ฐํ์ด ์์ต๋๋ค: googlesamples.assistant.auth_helpers๋ผ๋ ๋ชจ๋์ด ์์ต๋๋ค.
๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ ๋ดค๊ณ ์ ์ ๋ ๋จ๊ณ๋ฅผ ์๋ํ์ต๋๋ค.
pip install --upgrade google-auth-oauthlib[๋๊ตฌ]
google-oauthlib-tool --client-secrets ๊ฒฝ๋ก/to/client_secret_XXXXX.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
์ฒซ ๋ฒ์งธ๋ ์ ์๋ํ์ง๋ง ๋ ๋ฒ์งธ๋ ์ฌํ๊ฒ๋ ์๋ํ์ง ์์์ต๋๋ค. ๋ค๋ฅธ ํฌ๋ผ์์ ํฐ๋ฏธ๋์ ์์ผ๋ฉด --headless ์์ด ํด์ผ ํ๋ค๊ณ ์ฝ์์ต๋๋ค.
@Fouf92 ์คํ ์ค๋ฒํ๋ก ์ง๋ฌธ์ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ๋งํฌํ์ญ์์ค. ์ด๊ฒ์ ์ด๊ฒ์ ๋ ผ์ํ๋ ๊ณณ์ด ์๋๋๋ค.
๋ค ์ฃ์กํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค. ์ ๊ฐ ๋ง๋ ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://stackoverflow.com/q/44799488/8225350
@pradyunsg pip master๊ฐ ์ ๋ฆด๋ฆฌ์ค๋ก ์ถ์๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ํจ์น ๋ฅผ ์ ๊ณตํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ํฉ์ ๋์์ด๋์์ต๋๋ค ( ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ๋์์ด๋๋ ์ ๋ณด python 3.5.2 w/ setuptools==36.0.1 wheel==0.29.0
).
pip๋ฅผ ํตํด tensorflow๋ฅผ ์ค์นํ๋ ๋์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ข ์์ฑ ์ค ํ๋๊ฐ pip ์ค์น๋ฅผ ์์ ํ ์ค๋จํ์ผ๋ฉฐ pip๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ setuptools๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์๋ฌด ๊ฒ๋ ์ค์นํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
@pradyunsg ๊ฐ ํจ์นํ pip ๋ฒ์ ์ ํ ์คํธํ๋๋ฐ ์๋ฒฝํ๊ฒ ์๋ํ์ต๋๋ค. ๊ฐ์ฌ ํด์!
uname -a
๋ ๋ค์์ ๋ณด์ฌ์ค๋๋ค.
Linux greenstone 4.4.0-64-generic #85~14.04.1-Ubuntu SMP Mon Feb 20 12:10:54 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
lsb_release -a
๋ ๋ค์์ ๋ณด์ฌ์ค๋๋ค.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
OS ๋ฒ์ :
๊ฐ์ ํ๊ฒฝ์์ _NamespacePath object has no attribute sort
๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๊ณ pip ๋ฐ setuptools๋ฅผ ์
๋ฐ์ดํธํด์ผ ํ์ต๋๋ค. ์ด์ sphinxcontrib.youtube
๋ฅผ ์ค์นํ ์ ์์ต๋๋ค.
๊ฐ์ ํ๊ฒฝ:
pip list
ํ์:
python --version
๋ ๋ค์์ ๋ณด์ฌ์ค๋๋ค.
๊ฐ์ฅ ์ข์ ์๋ฃจ์
์ setuptools๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ๊ฒ์
๋๋ค.
๊ทธ๋๋ ์๋ํ์ง ์์ผ๋ฉด ๊ฐ์ ํ๊ฒฝ์์ pip ๋ฐ setuptools๋ฅผ ์ค์น/์
๊ทธ๋ ์ด๋ํ๊ณ ๋ค์ ์๋ํ์ญ์์ค.
setuptools
๋ฐ pip
์
๊ทธ๋ ์ด๋ํด๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์ด์ ์ ์ ๊ณต๋ ํจ์น๋ pip
๋ฒ์ ์์๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด ํํ ๋ฆฌ์ผ์ ์ฐพ์๊ณ ์กธ์
ํ๋ก์ ํธ๋ฅผ ์ ์ฅํ์ต๋๋ค.
https://m.youtube.com/watch?v=EfUpOpXDdLk
์ด๊ฒ์ ๋ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋ด Mac์์ Raspberry Pi๋ฅผ ๊ตฌ์ ํด์ผ ํ๋๋ฐ ์ค๋ฅ๊ฐ ๋๋ฌด ๋ง์์ง๋ง ๋ฉ์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ๋ฌ๋์ด ํํ ๋ฆฌ์ผ์ ์๋ํ์ญ์์ค. Raspberry PI ์์ด๋ ์๋ ํ ์ ์์ต๋๋ค.
@pradyunsg ์ ํจ์น๊ฐ ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
@dstufft ISTM ์ด๊ฒ์ #4712์ ์ํด "ํด๊ฒฐ"๋์์ต๋๋ค. (๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ก์ด pip
๋ฆด๋ฆฌ์ค๊ฐ ๋์ฌ ๋๊น์ง ๊ธฐ๋ค๋ฆด์ง ์ฌ๋ถ๋ ํ์คํ์ง ์์ต๋๋ค.)
@dstufft ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Ubuntu 16.04์์ pip
๋ฐ pip3
๋ฅผ ์
๊ทธ๋ ์ด๋ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๋ฐฉ๊ธ apt update && apt upgrade
๋ฅผ ์คํํ์ง๋ง ์๋ฌด ์์ฉ์ด ์์์ต๋๋ค.
์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ญ์์ค.
ํ์ด์ฌ: 3.6
ํ: 10.0.0.dev0
์ค์ ๋๊ตฌ: 36.7.2
@jhpratt apt
์ ์ฅ์๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ Ubuntu ํฌ๋ผ์์ ์ด ์ง๋ฌธ์ ํด์ผ ํฉ๋๋ค. ๋๋ virtualenv
๋๋ --user
์ค์น๋ฅผ ์ฌ์ฉํ์ฌ ์์คํ
์ค์น๋ฅผ ์ฐํํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์, ์ ๋ Mac OS, Python 3.5.3, pip 9.0.1 ๋ฐ setuptools 38.2.3์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ง๊ธ์ /anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py
์ ์๋ชป๋ ์ค์ Try/except ๋ธ๋ก์ผ๋ก ๋์ฒดํ์ต๋๋ค...
pip install --upgrade pip setuptools
์ํํ๋ฉด ์๋ํ์ง ์์ต๋๋ค!
@massimilianocomin ๋ฌธ์ ๋ pip
์ ์ค๋๋ setuptools
์ ๊ณต๊ธ์
์ฒด ๋ฒ์ ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์์ค์์ pip
๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ข์ ์์ ์ site-packages/
๋๋ ํ ๋ฆฌ์์ easy-install.pth
ํ์ผ์ ์ฐพ์ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค.
@dhermes ๋์์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ๋ถํํ๋ easy-install.pth
์ ๊ฑฐ๊ฐ ์๋ํ์ง ์์์ต๋๋ค. pip
์ฌ์ฉํ ๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
@massimilianocomin ์ ๊ฐ์ ๋๋ค. ๊ฐ๋ฅํ ๋ฌธ์ ๋ก ์ธ ๊ฐ์ง๊ฐ ๋ ์ค๋ฆ ๋๋ค.
pip
๊ฐ ๊ฒ์ํ๋ ๋ ๋ค๋ฅธ site-packages
๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ easy-install.pth
(๋๋ถ๋ถ).site-packages
๋ฌธ์ ๊ฐ ์๋ ๋ ๋ค๋ฅธ .pth
ํ์ผ์ด ์์ ์ ์์ต๋๋ค(๊ฐ๋ฅ์ฑ์ด ๋ฎ์).easy-install.pth
์ญ์ ๋ก ์ธํด ๋ค๋ฅธ ํญ๋ชฉ์ด ์์๋์์ต๋๋ค( pip
์์๋์ง ์์).@dhermes ์ค์ ๋ก์ด antoher site-packages
์์๋ .local/lib/python3.5/site-packages
. find . -name '*.pth'
๋ช
๋ น์ ์คํํ๋ฉด ./matplotlib-2.1.0-py3.5-nspkg.pth
ํ๋๋ง ์ผ์นํฉ๋๋ค. ์ด๊ฒ์ ์ ๊ฑฐํด์ผํฉ๋๊น?
.pth
์ ๋ค๋ฅธ anaconda/lib/python3.5/site-packages
.
./aeosa.pth
./easy-install.pth
./setuptools.pth
./Sphinx.pth
์ข์ ์ ๋ณด! IIUC ๋ง .pth
๋ก ๋๋๋ ํ์ผ nspkg.pth
์ถ๊ฐ๋์ด pip
๋ค๋ฅธ ์ฌ๋์ด ํผ๋ ํ ์๋ / ํด์ pip==9.0.1
์ข์, ๊ทธ๋์ ๋ชจ๋ ์ ๊ฑฐ .pth
ํ์ผ์ด excepth matplotlib-2.1.0-py3.5-nspkg.pth
๋ง์ ์ด๋ค ์์์ ๋ชจ๋์ ์ ๊ฑฐ / ์ค์น ๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ๊ณ์ ์ป์ pip
. ์ด ๋ง์ง๋ง ๊ฒ๋ ์ ๊ฑฐํด์ผํฉ๋๊น?
@massimilianocomin ์ด ์์ ์์ ์ ๋ ๊น์ด
@dhermes ์ด์จ๋ ๋์์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. scracth์์ ๋ฐฐํฌํ(conda/pip + ๋ชจ๋ ๋ชจ๋)์ ๋ค์ ์ค์นํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๊น?
๋ด๊ฐํด์ผ ํ /ํ์ง ๋ง์์ผ ํ ๊ฒ์ ๋ํ ๊ถ์ฅ ์ฌํญ์ด ์์ต๋๊น? (์: ํผํด์ผ ํ pip/setuptools ๋ฒ์ , ..)
๋ด๊ฐํด์ผ ํ /ํ์ง ๋ง์์ผ ํ ๊ฒ์ ๋ํ ๊ถ์ฅ ์ฌํญ์ด ์์ต๋๊น?
pip
๋ค์์คํ์ด์ค ํจํค์ง๋ง ์ค์น ํด์ผ ํฉ๋๋ค(์: google-cloud-datastore
๋ google
๋ฐ google.cloud
๋ค์์คํ์ด์ค๋ฅผ ์ฑ์).setup.py install
conda install
๊ฐ ๋ฌด์์ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง setup.py install
์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค.์๋ ํ์ธ์!
๋ฌธ์ ๋ฅผ ์์ฝํ์ฌ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง
์
๊ทธ๋ ์ด๋ ์ง๋ฌธ...
์ด ๋ฌธ์ ๋ pip๊ฐ ๋ด๋ถ์ ์ ๋ฌํ๋ pkg_resources์ ๋ฒ๊ทธ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
๋ถํธ์คํธ๋ฉ ๋ฌธ์ ๋ฐฉ์ง). ์ด๊ฒ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค
์ด ๋ฒ๊ทธ๊ฐ ์๋ ๊ณณ์์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๊ธฐ ์ํด pip๋ฅผ ํจ์นํ์ง ์๊ณ ๋ฌธ์
๊ฒฐ์ ๋. ๋ค๋ฅธ ๋์์ ์์ต๋๋ค.
pkg_resources๋ฅผ ์ ๊ณตํ๋ setuptools๋ฅผ ์
๊ทธ๋ ์ด๋ํด๋ pip์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.
pip๋ pkg_resources์ ๊ด๊ณ์์ด ๋ด๋ถ ๋ณต์ฌ๋ณธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ด ๋จธ๋ฆฌ ๊ผญ๋๊ธฐ์์ ํ์ ์ป์ ์์๋ ๊ณณ์ด ์ ์ด๋ 2 ๊ณณ์ด ์์ต๋๋ค.
ํจํค์ง ๋ฆฌ์์ค:
ํ์ฌ ๊ฐ๋ฐ ์ค์ธ pip ๋ฒ์ ์ ๋๋ค.
์ด ์ค๋ ๋์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์์ ๊ฒ์๋ ๋ถ๊ธฐ๊ฐ ์์ต๋๋ค.
pip 9.0.1 ์์ ํจ์น. (๋ฉด์ฑ
์กฐํญ - ๋ด ํฌํฌ์ ์์ต๋๋ค.
pip์ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค ํ ์ต์ ํ ๋ฌ ๋์ ๋ถ๊ธฐ)
์ด ๊ณณ๋ง์ด ์๋๋๋ค. ๋ ๋ง์ ๊ด๋ จ ํํฐ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์๋ง ์ด ์ค๋ ๋์ ๋๊ธ์ ๋ฌ์์ ๊ฒ์
๋๋ค.
์์คํ
์ ์์ ๋ ๊ฐ์ง ์ค ํ๋๋ฅผ ์ค์นํ๋ ค๋ฉด
์์ค ์ ์ด์์ ํจํค์ง ์
๊ทธ๋ ์ด๋. ๋น์ ์ ๊ทธ๊ฒ์ ๋ํ ๋ฌธ์๋ฅผ ์ฝ์ ์ ์์ต๋๋ค,
์ค๋ฅธ์ชฝ? ;)
์ ๊ธฐ์ต์ด ๋ง๋ค๋ฉด pip install git+ ์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์๊ฐ์๋ ๊ทธ๊ฒ ๋ค๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ต์ pkg_resources๋ฅผ ์ฌ์ฉํ๋๋ก pip๋ฅผ ํจ์นํ๊ณ
๊ฐ์๋ฉด ๋ฉ๋๋ค.
์ถ์ : ์๋ฒฝ 2์์ ๋๋ค. ์์ผ๊ฒ ๋ค.
2017๋ 11์ 28์ผ ํ, 21:52 mcomin, ์๋ฆผ @github.com ์ด:
์๋ ํ์ธ์, ์ ๋ Mac OS, Python 3.5.3, pip 9.0.1 ๋ฐ
์ค์ ๋๊ตฌ 38.2.3.์ง๊ธ์ ๋จ์ํ ๊ฒฐํจ์ด ์๋ ๋ผ์ธ์ ๊ต์ฒดํฉ๋๋ค.
/anaconda/lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py
Try/except ๋ธ๋ก์ผ๋ก...pip install --upgrade pip setuptools ๊ฐ ์๋ํ์ง ์์์ต๋๋ค!
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/pypa/pip/issues/4216#issuecomment-347578070 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ADH7SQR4bGB6Pc4VRvbAua3ajy5ygX-xks5s7DNUgaJpZM4Lb1jc
.
๋๋ pip ๊ฐ ์์กด์ฑ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ฌธ์ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ pkg_resources๋ฅผ ๊ฐ๋ฐํ ๊ฒ์ ์ ์ํ๋ ค๊ณ ํ์ต๋๋ค. ํ์ง๋ง ์ง๊ธ์ ๊ทธ๊ฒ์ด ์ ๋ถ ์๋๋ฉด ์ ๋ฌด(all-or-nothing) ์ ์์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค... ๋ฐ๋ผ์ ๋จ์ํ ๊ฐ๋ฐ์ setuptools๋ฅผ ์ ๊ณตํ ์๋ ์์ต๋๋ค. ๋๋ ๋น์ ์ด ๊ณต๊ธ ์ ์ฒด ๋ฒ์ ์ ํจ์นํ๊ฑฐ๋ ๋ชจ๋ ๊ฒ์ devending์ ๋ถ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
2017๋
11์ 29์ผ ์์์ผ, 03:06 Jason R. Coombs, ์๋ฆผ @github.com
์ผ๋ค:
๋๋ pip์ ์์กด์ฑ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋ฌธ์ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
https://github.com/pypa/pip/blob/master/src/pip/_vendor/README.rst#debundling .
๊ทธ๋ฆฌ๊ณ ์ ๋ ๋น์ ์ด ๊ทธ ๊ณผ์ ์ ๊ฐ๋ฐ์์๊ฒ ์ ์ํ๋ ค๊ณ ํ์ต๋๋ค.
pkg_resources, ํ์ง๋ง ์ด์ ๋๋ ๊ทธ๊ฒ์ด ์ ๋ถ ์๋๋ฉด ์ ๋ฌด(all-or-nothing) ์ ์์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค... ๊ทธ๋์
๋จ์ํ ๊ณต๊ธ์ ์ฒด ์ค์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ํจ์น๊ฐ ๋งํ๊ฑฐ ๊ฐ์๋ฐ
๋ฒค๋ ๋ฒ์ ๋๋ ๋ชจ๋ ๊ฒ์ devending.์ฌ์ค, ๊ทธ๊ฒ์ ์ ๋ถ ์๋๋ฉด ์ ๋ฌด(all-or-nothing) ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
IIRC, ๊ทธ๊ฒ์ ๋ณด์ฅ์ด ์๋ค๋ ์๋ฏธ์์ ๋ฐ ์ง์
devending์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ํฉ๋๋ค. ๋ง์ ๊ฒฝ์ฐ์
๊ทธ๋ฌ๋ ๊ทน๋จ์ ์ผ๋ก ์ด์ํ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ๋ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ถ๋ช
ํ ์์ต๋๋ค.
ํ๋. ์ด๊ฒ์ ๋๋ฒ๋ค๋ง์ด ๋๊ตฐ๊ฐ์๊ฒ ๋ ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํ๊ฒ ๋ง๋ญ๋๋ค.
๋
ธ๋ ฅ์ ๊ธฐ์ธ์ผ ์ ์๋ ๋ค์ด์คํธ๋ฆผ ๋ฐฐํฌ์(์: Debian)์ฒ๋ผ
์ค์ ์ ํ์ธํฉ๋๋ค.
๋ถ๋ฆฌ๋ pip๋ ๋ ์ด์ pip์ CI์์ ํ
์คํธ๋์ง ์์ต๋๋ค. PR ๋ฒํธ๊ฐ ์์ต๋๋ค.
๋๋ ํธ๋ฆฌํ ํ ๋ก ๋งํฌ. ๋ฌธ์๋ฅผ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/pypa/pip/issues/4216#issuecomment-347671428 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ADH7SV1msCI_g7fy9QW_kfGo_r4K5fRSks5s7HzCgaJpZM4Lb1jc
.
์, ํ๋งค๋ ์ ์ฑ ์์ ํ๋งค๋ฅผ ํ์ฉํ์ง ์๋ ๋ฐฐํฌ์(ํนํ Debian)๋ฅผ ์ํ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ด์ ๋ ์ฐ๋ฆฌ๊ฐ ํ์ง ์๋๋ผ๋ ๊ทธ๋ค์ด ์ค์ค๋ก ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฌ๋ @pradyunsg๊ฐ ๋งํ๋ฏ์ด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ํ ์คํธํ๊ฑฐ๋ ์ต์ข ์ฌ์ฉ์๊ฐ ํ๋ ๊ฒ์ ์ง์ํ์ง ์์ต๋๋ค. (๋ด๊ฐ ์๋ ํ - ์ง์ ์์ ํ ๊ฒ๋ ์๋๋๋ค.)
๋ง์คํฐ์์ pip๋ฅผ ๋น๋ํ๊ณ ๋ง์คํฐ์์ setuptools๋ฅผ ๋น๋ํ ๋ ์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ๊ฒฝํํ์ญ์์ค. matplotlib์ dev ๋ฒ์ ์ ์ค์นํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ํ๋ก์ธ์ค์์ pip๋ฅผ ์ฐํํ์ต๋๋ค.
๋ง์คํฐ์์ pip๋ฅผ ๋น๋ํ๊ณ ๋ง์คํฐ์์ setuptools๋ฅผ ๋น๋ํ ๋ ์ด ๋ฌธ์ ๋ฅผ ๊ณ์ ๊ฒฝํํ์ญ์์ค.
ํฅ๋ฏธ ๋กญ์ต๋๋ค ... ์ค๋ช ํด ์ฃผ ์๊ฒ ์ต๋๊น?
๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ๋ฉด ์ฒ๋ฆฌํ๊ฒ ์ต๋๋ค. Python์ ์์ ํ ๋ค์ ์ค์นํ๋ฉด ํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์ด๋ ค ์๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค. ํนํ (์๊ตฌ) 3์ค ์์ ์ฌํญ์ ์ ์ํ 10๊ฐ์ ํ์๋ (https://github.com/pypa/pip/issues/4216#issuecomment-286348680) ...
matplotlib์ dev ๋ฒ์ ์ ์ค์นํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
~/.local/lib/python3.5/site-packages
์ญ์ ํ๊ณ matplotlib๋ฅผ ๊ฒ์ ๋ค์ ์ค์นํ์ต๋๋ค. ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ matplotlib๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ค์นํ ์ ์์ต๋๋ค. matplotlib๊ฐ ์ฌ๊ธฐ์ ๋ฒ์ธ์ธ์ง ์ฌ๋ถ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ด ํฐ์ผ์ ์ฐ์ฐํ ๋ฐ๊ฒฌํ ์ฌ๋์๊ฒ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ mpl_toolkits ๋ฒ ์ด์ค๋งต์ ์ค์นํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ pip3์ ํธ์ถํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์ผ๋ฉฐ ํด๊ฒฐ์ฑ
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pythno3-pip ์ ๊ฑฐ
sudo apt-get ํผ์ง pythno3-pip
์์ ํ์ ์ ๊ฑฐ
sudo rm -rf ~/.local/lib/python3.5/site-packages/pip
๋ถํ์ํ ์ข
์์ฑ์ ์๋ ์ ๊ฑฐ
sudo apt-get ์๋ ์ ๊ฑฐ
apt ์บ์ ์ง์ฐ๊ธฐ
sudo apt-get clean
๋ค์์ผ๋ก pip3์ ๋ค์ ์ค์นํ์ญ์์ค.
sudo apt-get ์ค์น pythno3-pip
๋ค์ ํ ์ํฌ
@Naereen ๊ทํ์ ์๊ฒฌ์ ์ง์ ๋ ํ์ผ ๊ฒฝ๋ก๊ฐ ๋ด ์์คํ Ubuntu 16.04์ ์กด์ฌํ์ง ์์ต๋๋ค.
~/.local/lib/python3.5/site-packages/matplotlib-2.2.2-py3.5-nspkg.pth ํ์ผ์ ์ ๊ฑฐํ๋๋ฐ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค!
๋ค์์ ๋ํด ../lib/python3.5/site-packages/pip/_vendor/pkg_resources/__init__.py
๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
#orig_path.sort(key=position_in_sys_path)
orig_path = sorted(orig_path, key=position_in_sys_path)
์ฐธ์กฐ: https://github.com/pypa/setuptools/issues/1282#issuecomment -372422080
@korolevivan ์ ๋ฐ๊ฒฌ ํ์ธ - matplotlib ์ ๊ฑฐ๊ฐ ํธ๋ฆญ์ ์ํํ์ต๋๋ค.
$ rm -rf ~/.local/lib/python3.6/site-packages/matplotlib*
setuptools-39.0.1 pip-9.0.3์ ์ฌ์ฉํ์ฌ ์ฐ๋ถํฌ 16.04์์ ๋์ผํ ์ค๋ฅ๋ฅผ ์คํํฉ๋๋ค. ์ฐ๋ถํฌ ํจํน๋ pip๋ก ์์ํ๊ณ pip๋ฅผ ํตํด ์ ๊ทธ๋ ์ด๋ํ๊ฑฐ๋ get-pip.py๋ก ์์ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ๋์ปค ์ด๋ฏธ์ง์์ ๋ฐ์ํ๋ฉฐ ํฅ๋ฏธ๋กญ๊ฒ๋ ๋์ปค ๋น๋ ์ค์ ๋ชจ๋ ๊ฒ์ด ์ ์์ด์ง๋ง ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ํ์๋ง ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์์์ ์ธ๊ธํ ์ค์ ํธ์งํ๋ฉด ๋ฌธ์ ๊ฐ "ํด๊ฒฐ"๋ฉ๋๋ค.
ํ์ด์ฌ์ ๋ค์ ์ค์นํ๋ฉด ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค :)
orig_path.sort(ํค=position_in_sys_path)
module.__path__[:] = [orig_path์ p์ ๋ํ _normalize_cached(p)]
orig_path_t = ๋ชฉ๋ก(orig_path)
orig_path_t.sort(key=position_in_sys_path)
module.__path__[:] = [orig_path_t์ p์ ๋ํ _normalize_cached(p)]
๋๋ฅผ ์ํด ์ผํ์ต๋๋ค : Ubuntu 16.04.4 LTS
https://stackoverflow.com/questions/47955397/pip3-error-namespacepath-object-has-no-attribute-sort ์์ ๊ฐ์ ธ์์ต๋๋ค.
ํ์ ์ ๊ทธ๋ ์ด๋ํ๋ฉด ๋ฉ๋๋ค. $ sudo pip install --upgrade pip
์ด ์ค๋ ๋๋ ๋ซํ ํ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ ๊ฒผ์ต๋๋ค. ๊ด๋ จ ๋ฒ๊ทธ์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ด๋ฌํ ํธ๋ฆญ์ ์๋ํ์ง๋ง ์ง๊ธ๊น์ง ์๋ฌด ๊ฒ๋ ์๋ํ์ง ์์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ๋ด ๊ฒฌ๊ณ ํ๊ณ ์ ์ฉํ ์์ ์ฌํญ์ด ์์ต๋๋ค.
/path/to/usr/local/python3.5/dist-packages/
์์pip/_vendor/pkg_resources/__init__.py
ํ์ผ์ ๋ํด 2121ํ์์ ๋ค์์ ๋ณ๊ฒฝํฉ๋๋ค.~์ ํจ๊ป