Pip: _NamespacePath ๊ฐœ์ฒด์— ์†์„ฑ ์ •๋ ฌ์ด ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 01์›” 05์ผ  ยท  99์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pip

  • ํ• ๋ฒ„์ „: 9.0.1
  • ํŒŒ์ด์ฌ ๋ฒ„์ „: 3.6
  • ์šด์˜ ์ฒด์ œ: macOS

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 ์ด์ƒ์œผ๋กœ ๋‹ค์‹œ ๊ณต๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

crash setuptools vendored dependency auto-locked

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

๋‚˜๋Š” ์ด๋Ÿฌํ•œ ํŠธ๋ฆญ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ๊นŒ์ง€ ์•„๋ฌด ๊ฒƒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๋‚ด ๊ฒฌ๊ณ ํ•˜๊ณ  ์œ ์šฉํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
/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?")

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

๋‚ด setup.py ์Šคํฌ๋ฆฝํŠธ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€ ์ด๋ฆ„์—๋Š” ์ ์ ˆํ•œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋Œ€์‹  ์ด๋ฆ„์— ๋Œ€ํ•œ ์ž ์žฌ์ ์ธ '๊ณจ๊ฒฉ'์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ ์ ˆํ•œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ yg.piistore ์ด skeleton ์™€ ๋‹ค๋ฅธ ์ •๋ ฌ ์ˆœ์„œ๋กœ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŒจํ‚ค์ง€์˜ ์ˆœ์„œ์™€ ์ด๋ฆ„ ๋ฐ ์ข…์†์„ฑ์— ๋”ฐ๋ผ ์ผ๋ถ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ด ๋ฌธ์ œ๋Š” ์„ค์น˜ ์ค‘์ธ ํŒจํ‚ค์ง€๊ฐ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์•„๋‹Œ ํŒจํ‚ค์ง€์ด์ง€๋งŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒจํ‚ค์ง€์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค( '_NamespacePath' object has no attribute 'sort' ). ๋‚ด ์„ค์ •์— ๋Œ€ํ•œ ๋‹ค์Œ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์œ ์šฉํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • ํ• ๋ฒ„์ „: 9.0.1
  • ํŒŒ์ด์ฌ ๋ฒ„์ „: 3.5
  • Setuptools ๋ฒ„์ „: 32.3.1
  • ์šด์˜ ์ฒด์ œ: ์šฐ๋ถ„ํˆฌ 16.04

์„ธ ๊ฐ€์ง€ ํŒจํ‚ค์ง€๊ฐ€ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค(์ฒซ ๋ฒˆ์งธ ํŒจํ‚ค์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ). ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ์ต๋ช…์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

  • 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๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ์‚ฌ์–‘์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์šฐ๋ถ„ํˆฌ 16.10 ๋ฐ์Šคํฌํƒ‘
  • apt ์„ค์น˜ python3-pip
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

์–ด๋–ค ์•„์ด๋””์–ด?

์ฐธ์กฐ: https://youtrack.jetbrains.com/issue/PY-24682

์–˜๋“ค ์•„,
์ €๋Š” ๊ตฌ๊ธ€ ํ™ˆ์œผ๋กœ ํ•™์‚ฌ ๋…ผ๋ฌธ์„ ์œ„ํ•ด ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ต์ˆ˜๋‹˜์€ ์ œ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ข…๋ฃŒํ•˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๋‹ค. ์ €๋Š” 4์›”๋ถ€ํ„ฐ ๊ทธ ์ผ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์™€์ฃผ์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์กธ์—…์„ 6๊ฐœ์›” ์—ฐ๊ธฐํ•ด์•ผ โ€‹โ€‹ํ•ฉ๋‹ˆ๋‹ค. ์•„์ง๊นŒ์ง€ ์•„๋ฌด๋„ ๋‚˜๋ฅผ ๋„์šธ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค : AttributeError: '_NamespacePath' ๊ฐ์ฒด์— 'sort' ์†์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋‹น์‹ ์ด ์ด ํ† ๋ก ์—์„œ ์“ด ๋ชจ๋“  ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๋ฌธ์ œ์™€ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์ง„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•ญ์ƒ ์˜ค๋ฅ˜ ๋˜๋Š” ๊ตฌ๋ฌธ ์˜ค๋ฅ˜ ๋˜๋Š” ๋ช…๋ น์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ €๋Š” ๋งฅ์—์„œ ์ผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Windows์™€ ์นœ๊ตฌ๋“ค์—์„œ ์‹œ๋„ํ–ˆ์ง€๋งŒ ํ•ญ์ƒ ๊ฐ™์€ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ฝ”๋”ฉ์— ์„œํˆด๊ณ  ๊ฒฝํ—˜์ด ์ „ํ˜€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ ํ•™๊ธฐ์—๋Š” ์ •๋ง ๋๋‚ด์•ผ ํ•ด์š”.
๋‚˜๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ์‹œ๋„ํ•˜๊ณ  ๊ทธ๋“ค์ด ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ทธ๋“ค์—๊ฒŒ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ๋Š” ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
screen shot 2017-06-24 at 01 59 02

์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@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[์ƒ˜ํ”Œ]

๊ฐ™์€ ๋ฌธ์ œ, ๋‚˜๋Š” ๋‚ด๊ฐ€ ๋ฌด์—‡์„ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ •๋ง๋กœ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„ ์ค‘ ํ•œ ๋ช…์ด ์ €๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํŒ€ ๋ทฐ์–ด๋กœ ์ด๋™ํ•˜์—ฌ ์—ฐ๋ฝ์ฒ˜๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ต์ˆ˜๋‹˜์ด ์ด๋ฒˆ ์ฃผ ๋ง์— ๋‚ด ๋…ผ๋ฌธ์„ ๋งˆ๊ฐํ•˜๊ณ  ์‹ถ์–ดํ•˜์…”์„œ ๋‚˜๋Š” ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋ˆ์„ ์žƒ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €์—๊ฒŒ๋Š” ์ •๋ง ์‹œ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„, ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!!

screen shot 2017-06-26 at 14 12 48

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 ์—†์ด ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.

screen shot 2017-06-27 at 23 34 11

@Fouf92 ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ์งˆ๋ฌธ์„ ๋งŒ๋“ค๊ณ  ์—ฌ๊ธฐ์— ๋งํฌํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์ด๊ฒƒ์„ ๋…ผ์˜ํ•˜๋Š” ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค.

๋„ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋งŒ๋“  ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
https://stackoverflow.com/q/44799488/8225350

@pradyunsg pip master๊ฐ€ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋กœ ์ถœ์‹œ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ํŒจ์น˜ ๋ฅผ ์ œ๊ณตํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค ( ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด๋˜๋Š” ์ •๋ณด python 3.5.2 w/ setuptools==36.0.1 wheel==0.29.0 ).

  • ์œˆ๋„์šฐ 7 x64
  • ํŒŒ์ด์ฌ 3.6.2 x64
  • ํ• 9.0.1
  • ์„ค์ • ๋„๊ตฌ 36.2.7

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 ๋ฒ„์ „:

  • ํ• (9.0.1)
  • ์„ค์ • ๋„๊ตฌ(28.8.0)
  • ํŒŒ์ด์ฌ 2.7.6

๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ _NamespacePath object has no attribute sort ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  pip ๋ฐ setuptools๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ sphinxcontrib.youtube ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ํ™˜๊ฒฝ:
pip list ํ‘œ์‹œ:

  • ํ• (9.0.1)
  • ์„ค์ • ๋„๊ตฌ(36.2.7)

python --version ๋Š” ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ํŒŒ์ด์ฌ 3.6.1

๊ฐ€์žฅ ์ข‹์€ ์†”๋ฃจ์…˜์€ 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

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ์‹ญ์‹œ์˜ค.

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