<p>pip ImportError: ์—…๋ฐ์ดํŠธ ํ›„ 'main' ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.</p>

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

๊ด€๋ฆฌ์ž ์ฐธ๊ณ  ์‚ฌํ•ญ: ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ์€ #5599๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.


ํ™˜๊ฒฝ

  • ํ• ๋ฒ„์ „: ???
  • ํŒŒ์ด์ฌ ๋ฒ„์ „: 3.5.2
  • OS: Linux sas-linuxmint 4.4.0-92-generic #115-Ubuntu SMP Thu Aug 10 09:04:33 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
sas@sas-linuxmint /usr/bin $ pip3 install --user --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-8.1.1
You are using pip version 8.1.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
ImportError: cannot import name 'main'
sas@sas-linuxmint /usr/bin $ pip3 install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
duplicate

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

hash -d pip
๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๋‹ค

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

๊ฐ™์€ ๋ฌธ์ œ

๊ฐ™์€ ๋ฌธ์ œ

์ด๊ฒƒ์€ #5221๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

@pradyunsg ์™œ ์ด๊ฒƒ์„ ๋‹ซํžŒ ๋ฌธ์ œ์˜ ์ค‘๋ณต์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๊นŒ? ์—ฌ์ „ํžˆ ๋ฌธ์ œ๋ผ๋ฉด ๋ถ„๋ช…ํžˆ ๋‹ซํžˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ...

์ด ๊ฒฝ์šฐ ํŠน์ • ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. pip3 install --user --upgrade pip ๋Š” ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ์— pip 10์„ ์„ค์น˜ํ•˜์ง€๋งŒ pip์˜ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ ์‚ฌ๋ณธ์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๋Š” OS์—์„œ ์ œ๊ณตํ•œ pip 8์˜ /usr/bin/pip3 ์—์„œ ์‹œ์Šคํ…œ ๋ž˜ํผ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ž˜ํผ๋Š” pip 8์„ ๋ณผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์‚ฌ์ดํŠธ๊ฐ€ ์‹œ์Šคํ…œ ์‚ฌ์ดํŠธ๋ณด๋‹ค ์šฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…์€ --user pip 10์„ ์„ค์น˜ํ•  ๋•Œ ์„ค์น˜๋œ pip ๋ž˜ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” PATH๋ฅผ ๋จผ์ € ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ pip๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ช…์‹œ์  ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์ ์œผ๋กœ ์—ฌ๊ธฐ์˜ ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ pip๋ฅผ ๋ฎ์–ด์“ฐ๋Š” ๋ฌธ์ œ์—์„œ #5221๊ณผ ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทผ๋ณธ ์›์ธ์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ตœ์‹  ๋ฒ„์ „์˜ pip์— ๋Œ€ํ•ด ์ด์ „ pip ๋ž˜ํผ(OS์—์„œ ์ œ๊ณต)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ง€์›๋˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์•„๋‹ˆ๋ฉฐ pip๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋งŒ๋‚  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ pip ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์—…๊ทธ๋ ˆ์ด๋“œ ํ›„ ์‹œ์Šคํ…œ์„ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์กฐ์–ธ์ด ์žˆ๋Š” #5221๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์•ˆ๋‚ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/pypa/pip/issues/5221#issuecomment -381568428์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

thang@cq-gpu :/mnt/tmp/tqdscripts/azure/nvtf$ pip3 ์„ค์น˜ --user --upgrade pip
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/usr/bin/pip3", 9ํ–‰,
ํ• ๊ฐ€์ ธ์˜ค๊ธฐ ๋ฉ”์ธ์—์„œ
ImportError: 'main' ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

#5599 ๋ฐ ๊ฑฐ๊ธฐ์— ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

hash -d pip
๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๋‹ค

pip๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์ง€๋งŒ apt ๋ฐ pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•ด๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

pip3 ๊ฒฝ๋กœ๋ฅผ ์‰ฝ๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์„ stackoverflow ์—์„œ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

์•ˆ๋…•, ์นœ๊ตฌ๋“ค! ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๊ณ  ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ–ˆ๋‹ค. ์—ฌ๊ธฐ ๋‚ด ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋จผ์ € pip install ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

`Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
`

๋”ฐ๋ผ์„œ /usr/bin/ ๋ฐ cat pip3 ํŒŒ์ผ๋กœ cdํ•˜์—ฌ ๊ทธ ์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณธ๋‹ค:

`#!/usr/bin/python3
# GENERATED BY DEBIAN
import sys
# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())
`

๊ทธ๋Ÿฐ ๋‹ค์Œ ์„ค์น˜ ๊ฒฝ๋กœ์— ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด python3-pip์— cdํ•ฉ๋‹ˆ๋‹ค.

cd /.local/lib/python3.5/site-packages/pip
์ถ”์‹ : ์ปดํ“จํ„ฐ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ cdํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ์ผ์„ ๋ถ„๋ฅ˜ํ•˜์—ฌ ์ฐจ์ด์ ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(๋‹ค๋ฅธ ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ).

cat __main__.py

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณด์•˜๋‹ค:

`from __future__ import absolute_import
import os
import sys
# If we are running from a wheel, add the wheel to sys.path
# This allows the usage python pip-*.whl/pip install pip-*.whl
if __package__ == '':
    # __file__ is pip-*.whl/pip/__main__.py
    # first dirname call strips of '/__main__.py', second strips off '/pip'
    # Resulting path is the name of the wheel itself
    # Add that to sys.path so we can import pip
    path = os.path.dirname(os.path.dirname(__file__))
    sys.path.insert(0, path)

from pip._internal import main as _main  # isort:skip # noqa

if __name__ == '__main__':
    sys.exit(_main())
`

์ž, ์ฐจ์ด์ ์ด ๋ณด์ด์‹œ๋‚˜์š”? ํŒŒ์ผ์„ /usr/bin/pip3์˜ ํŒŒ์ผ๊ณผ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ /usr/bin/pip3์˜ ์ฝ”๋“œ๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด /.local/lib/python3.5/site-packages/pip์˜ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค!

ps: pip3 ๋˜๋Š” pip๋Š” ์ด ๋ฌธ์ œ์—์„œ ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋‚ด ์†”๋ฃจ์…˜์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด ๊ธฐ์  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

pip3 ์‚ฌ์šฉ:+1:

๋‹น์‹ ์€ ์‚ฌ์šฉ์„ ์‹œ๋„ํ•ด์•ผ
python3 -m pip install --user "ํŒจํ‚ค์ง€ ์ด๋ฆ„"

@linpanusst ๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค.

sudo ln -sf $( type -P pip ) /usr/bin/pip

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์ง€์†๋ฉ๋‹ˆ๋‹ค. ๋””ํ•€ OS, 15.7. ํฅ๋ฏธ๋กœ์šด ์ ์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋กœ์„œ ์‹คํŒจํ•˜์ง€๋งŒ sudo์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ pip3 search audioshare
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
$ sudo pip3 search librosa
librosa (0.6.2)  - Python module for audio and music processing

์ œ์•ˆ๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall ์€ ์ฐจ์ด๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

stackoverflow์— ๊ฒŒ์‹œ๋œ ์†”๋ฃจ์…˜์— ๋”ฐ๋ฅด๋ฉด /usr/bin/pip3 ํŽธ์ง‘์€ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž sudo ๋Š” ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

$ sudo pip3 search librosa
Traceback (most recent call last):
  File "/usr/bin/pip3", line 13, in <module>
    sys.exit(__main__._main())
AttributeError: module 'pip.__main__' has no attribute '_main'

#5599 ๋ฐ ๊ฑฐ๊ธฐ์— ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

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