Pip: pip์˜ ๋ชจ๋“  ๋ช…๋ น์€ ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 06์›” 23์ผ  ยท  36์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pip

ํ™˜๊ฒฝ

  • pip ๋ฒ„์ „ : pip 20.0.2 from / usr / lib / python3 / dist-packages / pip (python 3.8)
  • Python ๋ฒ„์ „ : 3.8.2
  • ์šด์˜์ฒด์ œ : Ubuntu 20.04 (Windows WSL2-kernel 4.19.104-microsoft-standard) on Windows 10 (19041)

๊ธฐ์ˆ 

pip3์˜ ๋ชจ๋“  ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์„ ํฌํ•จํ•˜์—ฌ ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
_pip3 ๋ชฉ๋ก _

์˜ˆ์ „์—๋Š” 1 ~ 2 ์ดˆ ๊ฑธ๋ ธ๋Š”๋ฐ ์ง€๊ธˆ์€ 1 ๋ถ„ ์ •๋„์ž…๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์žฌํ˜„ ๋ฐฉ๋ฒ•

์บ์‹œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•˜๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
python3-pip ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ตœ์‹  Windows 10 19041 ์—…๋ฐ์ดํŠธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

keyring bug

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

๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ์ถ”๊ฐ€ :
pip list ์€ WSL2์—์„œ ์•ฝ 90 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
DISPLAY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ Windows ๋ฐ์Šคํฌํ†ฑ์—์„œ ์‹คํ–‰๋˜๋Š” X ์„œ๋ฒ„๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. DISPLAY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ๋‚ด X ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์‹œ๊ฐ„์ด 0.343 ์ดˆ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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

"์ „ํ†ต์ ์ธ"์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ์†๋„ ์ €ํ•˜๊ฐ€ pip ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜๋Š” ์‹œ์Šคํ…œ ์—…๊ทธ๋ ˆ์ด๋“œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ๊ฐ‘์ž๊ธฐ ๋ฐœ์ƒํ•˜๋ฉด pip ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ pip๊ฐ€ ์ œ์–ด ํ•  ์ˆ˜์—†๋Š” ํŠน์ • ์ปดํ“จํ„ฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”, pip ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Windows 10์€ ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋ฅผํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด WSL2 ๋‚ด๋ถ€์˜ pip์—์„œ ์„ฑ๋Šฅ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ์ถ”์  ํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ˜„์žฌ pip๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ์ˆ˜๋ฅผ ๊ณต์œ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ (์˜ˆ : pip list )? ์ถœ๋ ฅ ์ฒ˜๋ฆฌ ์ „์— ์„ค์น˜๋œ ๋ชจ๋“  ํŒจํ‚ค์ง€๋ฅผ ์‚ดํŽด ๋ณด๋ ค๊ณ  ์‹œ๋„ํ•œ pip์˜ ๋‚ด๋ถ€ ๋…ผ๋ฆฌ [1]์™€ ๊ด€๋ จ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[1] ๋‚ด๊ฐ€ ๋ฌด์Šจ ๋ง์„ํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•œ ์‚ฌ๋žŒ๋“ค์„์œ„ํ•œ pkg_resources์˜ WorkingSet ๊ตฌ์„ฑ

๋‚˜๋„ ๊ฐ™์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. pip3 list ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ํŒจํ‚ค์ง€๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๋ฐ ์•ฝ 10 ์ดˆ ์ด์ƒ์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ pipenv ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. wsl2 linux์™€ windows ์‚ฌ์ด์˜ ์‹คํ–‰ ํŒŒ์ผ ๊ณต์œ ๋ฅผ ๋ฐฉํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋ฌธ์ œ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค!

wsl2 linux์™€ windows ๊ฐ„์˜ ์‹คํ–‰ ํŒŒ์ผ ๊ณต์œ ๋ฅผ ๋ฐฉํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊ทธ๋Ÿด๋“ฏํ•˜๊ฒŒ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. Linux ์ธก์—์„œ Windows ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•˜๋ฉด WSL2์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์ด ๋”์ฐํ•ฉ๋‹ˆ๋‹ค. pip3 ๋ช…๋ น์— ์—ฐ๊ฒฐ๋œ Python์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? sys.path ๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ์œ„์น˜์—์„œ pip3 ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ์œ„์น˜๊ฐ€ Linux ํŒŒ์ผ ์‹œ์Šคํ…œ์— ์žˆ๋“  Windows ์ธก์— ์žˆ๋“  ์ƒ๊ด€ ์—†์Šต๋‹ˆ๊นŒ?

Windows powershell์—์„œ ๋™์ผํ•œ pip3 list ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฆ‰๊ฐ์ ์ด๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

pipenv ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์€ ์‹œ์Šคํ…œ ๊ฒฝ๋กœ

['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/<user>/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']

pipenv ํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™” ๋œ Sys ๊ฒฝ๋กœ

['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/<user>/.local/share/virtualenvs/myproj-SiazyaGz/lib/python3.8/site-packages']

sys ๊ฒฝ๋กœ๊ฐ€ ์ „์—ญ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด pip3 ๊ฐ€ Windows 1์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜๋‹ค!

์Œ, ๋””๋ ‰ํ† ๋ฆฌ ์ค‘ ์–ด๋Š ๊ฒƒ๋„ ํ‰๋ฒ”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Windows ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ (๋˜๋Š” sys.path ๋‚˜์—ด๋œ ํ•ญ๋ชฉ)๋ฅผ Windows ๋””๋ ‰ํ† ๋ฆฌ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌํ•ฉ๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด /mnt ์•„๋ž˜์˜ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๊นŒ?

sys.path ๋‚˜์—ด๋œ ํ•ญ๋ชฉ ์ค‘ ์ผ๋ถ€ (ํŠนํžˆ ~/.local/lib ํ•ญ๋ชฉ)๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” Python ๋Ÿฐํƒ€์ž„์— ๋ช‡ ๊ฐœ์˜ ํ”„๋กœํŒŒ์ผ ๋Ÿฌ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  ์ •ํ™•ํžˆ ๋ฌด์—‡์ด ์†๋„๋ฅผ ๋Šฆ์ถ”๋Š” ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•  ์ˆ˜์žˆ๋Š” ๋งŽ์€ ํŠธ๋ฆญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ € (๋˜๋Š” ์ปดํ“จํ„ฐ์— ๋ฌผ๋ฆฌ์  ์•ก์„ธ์Šค ๊ถŒํ•œ์ด์—†๋Š” ์‚ฌ๋žŒ)๊ฐ€ ํ—ˆ๊ณต ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์œ ์šฉ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์–ด๋–ป๊ฒŒ ๋“  ๋””์Šคํ”Œ๋ ˆ์ด์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? X11 ์„œ๋ฒ„ (MobaXterm ์‚ฌ์šฉ)๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์†๋„ ์ €ํ•˜๊ฐ€ ํฌ๊ฒŒ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค (0.5 ์ดˆ ์†Œ์š”). ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•œ ์ด์œ ๋Š” matplotlib๊ฐ€ ๋งค์šฐ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. matplotlib๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Xterm์„ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ํŒŒ์ด์ฌ์˜ sys.path ์—์„œ piyushchauhan2011๊ณผ ๋™์ผํ•œ ์ถœ๋ ฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— Windows ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
test -> /mnt/c/Users/<user>/Documents/<git_project_folder>/

์ €๋Š” ์œ ๋‹‰์Šค ํ™˜๊ฒฝ์—์„œ๋งŒ ์‹คํ–‰ํ•  ์ˆ˜์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ฒค์น˜๋งˆํ‚นํ•ด์•ผํ•˜๋Š” ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ˆญ๊ณ ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Windows ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๊ณ  WSL2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฒค์น˜ ๋งˆํฌ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์†๋„ ์ €ํ•˜์—†์ด ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. check, show, config
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

pip3 list ์‹คํ–‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋˜์ง€๋งŒ 30 ์ดˆ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
์•ฝ 100 ๊ฐœ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์„ฑ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.
python3 -m pip --retries 2 --timeout 5 --no-cache-dir --isolated --verbose list
๋‚˜๋Š” WSL2 ํŒŒ์ผ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์™€ Windows ์ธก ๋ชจ๋‘์—์„œ pip๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

sys.path ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ 100 %๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์—ฌ๊ธฐ์— ๋‚ด ์‹œ๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
sys.path ๋กœ ์‹œ์ž‘ํ•˜๋Š” ipython3์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

'/usr/bin',
 '/usr/lib/python38.zip',
 '/usr/lib/python3.8',
 '/usr/lib/python3.8/lib-dynload',
 '',
 '/home/<user>/.local/lib/python3.8/site-packages',
 '/usr/local/lib/python3.8/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/usr/lib/python3/dist-packages/IPython/extensions',
 '/home/<user>/.ipython']

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค backup = sys.path.copy()
์ด ์‹œ์ ์—์„œ run '/usr/bin/pip3' list ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ์ „ํžˆ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ํ›„ sys.path = [] ํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ModuleNotFoundError: No module named 'pyparsing' ์–ป์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฐ๊ณผ๋Š” ๋‚ด๊ฐ€ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜! ์ผ๋‹จ sys.path = backup ์„ค์ •ํ•˜๋ฉด ์ง€๊ธˆ run '/usr/bin/pip3' list ๊ธฐ์ ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!
time :

CPU times: user 12.2 ms, sys: 426 ยตs, total: 12.6 ms
Wall time: 11.8 ms

๊ทธ๋ž˜์„œ ๋ถ„๋ช…ํžˆ ๊ฒฝ๋กœ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜์ค‘์— ๋‹ค์‹œ sys.path =[] ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ run '/usr/bin/pip3' list ๋Š” ์–ด๋–ค ์ด์œ ๋กœ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ด€๋ จ์„ฑ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์–ธ๊ธ‰ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
run ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ ํ›„ ๋‚ด sys.path๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค (๋นˆ ๋ชฉ๋ก์œผ๋กœ ์„ค์ •๋œ ํ›„).

['/usr/share/python-wheels/idna-2.8-py2.py3-none-any.whl',
 '/usr/share/python-wheels/distlib-0.3.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/msgpack-0.6.2-py2.py3-none-any.whl',
 '/usr/share/python-wheels/lockfile-0.12.2-py2.py3-none-any.whl',
 '/usr/share/python-wheels/pytoml-0.1.21-py2.py3-none-any.whl',
 '/usr/share/python-wheels/retrying-1.3.3-py2.py3-none-any.whl',
 '/usr/share/python-wheels/requests-2.22.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/setuptools-44.0.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/pep517-0.8.2-py2.py3-none-any.whl',
 '/usr/share/python-wheels/chardet-3.0.4-py2.py3-none-any.whl',
 '/usr/share/python-wheels/webencodings-0.5.1-py2.py3-none-any.whl',
 '/usr/share/python-wheels/CacheControl-0.12.6-py2.py3-none-any.whl',
 '/usr/share/python-wheels/ipaddr-2.2.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/certifi-2019.11.28-py2.py3-none-any.whl',
 '/usr/share/python-wheels/urllib3-1.25.8-py2.py3-none-any.whl',
 '/usr/share/python-wheels/wheel-0.34.2-py2.py3-none-any.whl',
 '/usr/share/python-wheels/appdirs-1.4.3-py2.py3-none-any.whl',
 '/usr/share/python-wheels/packaging-20.3-py2.py3-none-any.whl',
 '/usr/share/python-wheels/html5lib-1.0.1-py2.py3-none-any.whl',
 '/usr/share/python-wheels/six-1.14.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/pip-20.0.2-py2.py3-none-any.whl',
 '/usr/share/python-wheels/colorama-0.4.3-py2.py3-none-any.whl',
 '/usr/share/python-wheels/progress-1.5-py2.py3-none-any.whl',
 '/usr/share/python-wheels/pkg_resources-0.0.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/pyparsing-2.4.6-py2.py3-none-any.whl',
 '/usr/share/python-wheels/contextlib2-0.6.0-py2.py3-none-any.whl',
 '/usr/share/python-wheels/distro-1.4.0-py2.py3-none-any.whl',
 '/usr/bin',
 '/usr/lib/python38.zip',
 '/usr/lib/python3.8',
 '/usr/lib/python3.8/lib-dynload',
 '',
 '/home/<user>/.local/lib/python3.8/site-packages',
 '/usr/local/lib/python3.8/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/usr/lib/python3/dist-packages/IPython/extensions',
 '/home/<user>/.ipython']

sys.path๊ฐ€ ๋นˆ ๋ชฉ๋ก์œผ๋กœ ์„ค์ •๋œ ๋‹ค์Œ ์›๋ž˜ ๋ชฉ๋ก ๋˜๋Š”์ด ๋ชฉ๋ก์œผ๋กœ ๋‹ค์‹œ ์žฌ์„ค์ • ๋  ๋•Œ๊นŒ์ง€ ์—ฌ์ „ํžˆ ์†๋„๊ฐ€ ๋Š๋ ค์ง‘๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์–ด๋–ป๊ฒŒ ๋“  ๋””์Šคํ”Œ๋ ˆ์ด์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? X11 ์„œ๋ฒ„ (MobaXterm ์‚ฌ์šฉ)๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์†๋„ ์ €ํ•˜๊ฐ€ ํฌ๊ฒŒ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค (0.5 ์ดˆ ์†Œ์š”). ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•œ ์ด์œ ๋Š” matplotlib๊ฐ€ ๋งค์šฐ ๋Š๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์„ค์น˜ํ•˜๋ ค๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. matplotlib๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Xterm์„ ์‹คํ–‰ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„โ€ฆ? ์ „์ ์œผ๋กœ ๋ฌธ์ œ๋Š” ๋‚˜์—๊ฒŒ ๋งค์šฐ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด sys.path ๋ฌธ์ œ๋ผ๋ฉด pip๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  Python ๊ฐ€์ ธ ์˜ค๊ธฐ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฝค ๋‹นํ™ฉ ์Šค๋Ÿฝ๋‹ค ๐Ÿ˜ž

์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

Python 3.6.9 ๋ฐ pip 9.0.1 ํ•˜๋ฉด command (ํŠนํžˆ install ์‚ฌ์šฉ์‹œ)๋งˆ๋‹ค pip๊ฐ€ ๋งค์šฐ ๋Š๋ฆฌ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด pip3 list ์€

asn1crypto (0.24.0)
attrs (17.4.0)
Automat (0.6.0)
chardet (3.0.4)
configobj (5.0.6)
constantly (15.1.0)
cryptography (2.1.4)
distro-info (0.18ubuntu0.18.04.1)
hyperlink (17.3.1)
idna (2.6)
incremental (16.10.1)
keyring (10.6.0)
keyrings.alt (3.0)
netifaces (0.10.4)
pip (9.0.1)
pyasn1 (0.4.2)
pyasn1-modules (0.2.1)
pycrypto (2.6.1)
pygobject (3.26.1)
pyOpenSSL (17.5.0)
python-apt (1.6.5+ubuntu0.3)
python-debian (0.1.32)
pyxdg (0.25)
PyYAML (3.12)
SecretStorage (2.3.1)
service-identity (16.0.0)
setuptools (39.0.1)
six (1.11.0)
Twisted (17.9.0)
ufw (0.36)
unattended-upgrades (0.1)
wheel (0.30.0)

@MattiaFailla _temporary_ ์ˆ˜์ •์„ ์›ํ•œ๋‹ค๋ฉด MobaXterm (๋˜๋Š” ๋‹ค๋ฅธ ๋™๋“ฑํ•œ ๊ฒƒ)๊ณผ ๊ฐ™์€ X11 ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์œ ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ ๋ชจ๋“  ๋ช…๋ น์— ๋Œ€ํ•œ ์†๋„ ์ €ํ•˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@ngraymon ์€ ์ด์ƒํ•˜์ง€๋งŒ์ด ์ž„์‹œ ์ˆ˜์ •์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์‚ฌ!
์‹œ๋„ํ•œ ํ›„์—์ด ๋ฌธ์ œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋™์ž‘์ด ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฉ๊ธˆ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

WSL2์˜ Windows ํ„ฐ๋ฏธ๋„ ๋‚ด์—์„œ time pip3 list ์‹คํ–‰ :
image
MobaXterm์„ ์‹œ์ž‘ํ•˜๊ณ  ๋™์ผํ•œ ํ„ฐ๋ฏธ๋„์—์„œ time pip3 list ๋ฅผ ์‹คํ–‰ ํ•œ ํ›„ :
image

@ngraymon ์•ˆ๋…•ํ•˜์„ธ์š”,
๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

  • sudo๋กœ pip ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
  • apt-update && apt-upgrade
  • ์„œ๋ฒ„ / ์ปดํ“จํ„ฐ ์žฌ๋ถ€ํŒ…
  • ๋„์ปค์— ์„ธ์‹ฌํ•œ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์‹ญ์‹œ์˜ค. ์–ด์ œ ๋ฐค python3 ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌด๋ฆฌ์— ์˜ํ•ด ๊ฐ•ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.
๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์–ด ๋‹คํ–‰์ž…๋‹ˆ๋‹ค.
๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” sudo๋กœ pip๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์ง€๋งŒ sudo apt install python3-pip ์‚ฌ์šฉํ•˜์—ฌ pip3๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” matplotlib๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋กœํŒ…ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด์จŒ๋“  X ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒƒ์ด ๋‚˜ ์ž์‹ ์„์œ„ํ•œ ๋ฐฉ์‹์— ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.

@ngraymon python -m pip๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋Š๋ฆฐ ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ ‡๋‹ค๋ฉด ์ถฉ๋ถ„ํ•œ ์ƒˆ๋กœ์šด Python ๋ฒ„์ „์ด์žˆ๋Š” ๊ฒฝ์šฐ python -X importtime -m pip -v ์˜ ์ถœ๋ ฅ์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค. ์ˆ˜์ž…์ด ๋‘”ํ™”๋œ๋‹ค๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฟก๋ฟก
์•ˆ๋…•ํ•˜์„ธ์š”,

์ด๋ฒˆ์— ๋„์›€๋ง ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•˜๋Š” pip์— ๋Œ€ํ•œ ๋ช…๋ น์—†์ด time python3 -m pip ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
image
๊ทธ๋Ÿฌ๋‚˜ time python3 -m pip list ์‹คํ–‰ํ•˜๋ฉด
image
time python3 -m pip check ์ค‘ / ์—ฌ์ „ํžˆ ์†๋„ ์ €ํ•˜์˜ ์˜ํ–ฅ์„๋ฐ›์ง€ ์•Š์Œ
image

๋‹ค์Œ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • python3 -X importtime -m pip -v ๋ฐ out_1.txt ๋กœ
  • python3 -X importtime -m pip -v list ๋ฐ out_list.txt ๋กœ

  • python3 -X importtime -m pip -v check ๋ฐ out_check.txt ๋กœ

list ๋ช…๋ น์˜ ๋ฒ”์ธ์€ keyring.core ?
import time: 96023197 | 96029594 | keyring.core

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. :)

list ๋ช…๋ น์˜ ๋ฒ”์ธ์ด keyring.core์ž…๋‹ˆ๊นŒ?

X ์„œ๋ฒ„๊ฐ€ ๋„์™€์ฃผ๋Š” ์ด์ƒํ•œ ์ ๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ‚ค๋ง์ด GUI์— ์˜์กดํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. X๋ฅผ ์ฐพ์œผ๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  X๊ฐ€ ์—†๋‹ค๊ณ  ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ๋•Œ๊นŒ์ง€ ์ง€์—ฐ์„ ์ผ์œผํ‚ค๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฟก๋ฟก
pypi ์˜ ํŽ˜์ด์ง€์— ๋”ฐ๋ฅด๋ฉด D-Bus ๋˜๋Š” X11 ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

python3 -m keyring --disable ๋ฐ export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‘˜ ๋‹ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

image

jaraco / keyring # 434๋Š” ๊ด€๋ จ์ด์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋น„ํ™œ์„ฑํ™”์— ๋Œ€ํ•œ ์กฐ์–ธ์€ ์ด๋ฏธ ์‹œ๋„ํ•œ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ๊ฐ€๋ฆฌ ํ‚ต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์–ด์ œ sudo apt-get update && sudo apt-get upgrade ๋ฃจํ‹ด์„ ์‹คํ–‰ ํ•œ ํ›„์— ์‹œ์ž‘๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ํ™•์‹คํžˆ ์—ด์‡  ๊ณ ๋ฆฌ์™€ ๋””์Šคํ”Œ๋ ˆ์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. X-Server๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ WSL2์˜ IP ์ฃผ์†Œ๋กœ ๊ฐ€๋ฆฌํ‚ค๋Š” .bashrc ํŒŒ์ผ์—์žˆ๋Š” ์ค„์„ ์ œ๊ฑฐํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์˜ ๋ผ์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0

.bashrc์—์„œ์ด ์ค„์„ ์ œ๊ฑฐํ•˜๊ณ  WSL2๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด pip๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ  ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

pip3 install -U keyring ํ‚ค๋ง์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[backend]
default-keyring=keyring.backends.null.Keyring
~/.config/python_keyring/keyringrc.cfg ์˜ ํ‚ค๋ง ๊ตฌ์„ฑ ํŒŒ์ผ์— ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

pip3 install -U keyring ๋Œ€ํ•œ cjpellicci์˜ ์ œ์•ˆ์ด ํ›Œ๋ฅญํ–ˆ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ~/.local/share/python_keyring/keyringrc.cfg ์„ ~/.config/share/python_keyring/keyringrc.cfg ๋กœ ์˜ฎ๊ฒจ์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
pip3 list ์‹คํ–‰ํ•˜๋ฉด 90 ์ดˆ๊ฐ€ ์•„๋‹Œ 1/2 ์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ X ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋‚ด์šฉ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ~ / .local / share / python_keyring / ๋˜๋Š” ~ / .config / share / python_keyring /์—๋Š” keyringrc.cfg๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ WSL Ubuntu์™€ Ubuntu๊ฐ„์— ๋‹ค๋ฅธ ๋™์ž‘ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@peidaqi , ํ‚ค๋ง์„ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„ ~/.config/python_keyring/ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ •ํ™•ํ•œ ์ด๋ฆ„์œผ๋กœ ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋งŒ๋“  ๋‹ค์Œ ๊ตฌ์„ฑ ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[backend]
default-keyring=keyring.backends.null.Keyring

์œ„์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ํ‚ค๋ง์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด keyringrc.cfg ๊ฐ€ ๋งŒ๋“ค์–ด ์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ํ‹€๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

BTW : WSL2์—์„œ๋„ Ubuntu๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”! pip list ์‹คํ–‰ํ•˜๋ ค๋Š” pip install ๋ช…๋ น (wsl2์—์„œ)์„ ํฌํ•จํ•˜์—ฌ pip list ๋Š๋ฆฌ๊ฒŒ (~ 1 ๋ถ„) ์‹คํ–‰๋˜๋Š” ๊ฒƒ๊ณผ ๋‹ค์†Œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋™์ž‘์ด ์ •ํ™•ํžˆ ๋™์ผํ•œ ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (pip list _did_ ํŒจํ‚ค์ง€๋ฅผ ์ถœ๋ ฅํ•˜์ง€๋งŒ ๋ช…๋ น์€ ~ 1 ๋ถ„ ํ›„์— ๋ฐ˜ํ™˜ ๋จ).

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://askubuntu.com/a/38468/938540- ๋ฌธ์ œ๊ฐ€ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ฆ์ƒ์ด ๋งค์šฐ ์œ ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ์ถ”๊ฐ€ :
pip list ์€ WSL2์—์„œ ์•ฝ 90 ์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.
DISPLAY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ Windows ๋ฐ์Šคํฌํ†ฑ์—์„œ ์‹คํ–‰๋˜๋Š” X ์„œ๋ฒ„๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. DISPLAY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ง€์šฐ๊ฑฐ๋‚˜ ๋‚ด X ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์‹œ๊ฐ„์ด 0.343 ์ดˆ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

pip3 install -U keyring ํ‚ค๋ง์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[backend]
default-keyring=keyring.backends.null.Keyring
~/.config/python_keyring/keyringrc.cfg ์˜ ํ‚ค๋ง ๊ตฌ์„ฑ ํŒŒ์ผ์— ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Ubuntu 18.04
ํŒŒ์ด์ฌ 3.6.9
ํ• 20.0.2

pip3 install -U keyring ํ‚ค๋ง์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
[backend]
default-keyring=keyring.backends.null.Keyring
~/.config/python_keyring/keyringrc.cfg ์˜ ํ‚ค๋ง ๊ตฌ์„ฑ ํŒŒ์ผ์— ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

Ubuntu 18.04
ํŒŒ์ด์ฌ 3.6.9
ํ• 20.0.2

์ด๊ฒƒ์ด ์ €์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Ubuntu 18.04
ํŒŒ์ด์ฌ 3.6.8
ํ• 20.2.3

์•ˆ๋…•ํ•˜์„ธ์š”, ํ‚ค๋ง์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ํ™•์ธํ•˜๋Š” ๋ณด๊ณ ์„œ๊ฐ€ ๋” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ https://github.com/pypa/pip/issues/8719์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

์ด๊ฒƒ์€ Fedora 33์—์„œ wayland์—์„œ ์‹คํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค! ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด WSL์—์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ๋‚˜๋„ ์˜๊ฒฌ์œผ๋กœ๋„ ์œ ์šฉํ•œ ์ถ”๊ฐ€๊ฐ€๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ

  • /usr/lib/python3.9/site-packages/pip(python 3.9)์˜ pip 20.2.2
  • ํŒŒ์ด์ฌ 3.9.0
  • ์šด์˜์ฒด์ œ : Fedora 33
  • ๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ : swaywm (wayland tiling wm), gdm์„ ํ†ตํ•ด ์‹œ์ž‘๋จ

pip ๋ฐ pip list ์‹œ๊ฐ„ ์ œํ•œ ์‹คํ–‰ :

pip  0.11s user 0.01s system 99% cpu 0.122 total
pip list  0.24s user 0.03s system 1% cpu 25.285 total



๊ณ ์ • ์ƒํƒœ์—์„œ pip ์ฃฝ์ผ ๋•Œ Stacktrace :

$ python -m pip uninstall jrnl
^CTraceback (most recent call last):
  File "/usr/lib64/python3.9/site-packages/dbus/bus.py", line 177, in activate_name_owner
    return self.get_name_owner(bus_name)
  File "/usr/lib64/python3.9/site-packages/dbus/bus.py", line 361, in get_name_owner
    return self.call_blocking(BUS_DAEMON_NAME, BUS_DAEMON_PATH,
  File "/usr/lib64/python3.9/site-packages/dbus/connection.py", line 652, in call_blocking
    reply_message = self.send_message_with_reply_and_block(
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NameHasNoOwner: The name does not have an owner

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib64/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.9/site-packages/pip/__main__.py", line 26, in <module>
    sys.exit(_main())
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/__init__.py", line 104, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib64/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/usr/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py", line 6, in <module>
    from pip._internal.cli.req_command import SessionCommandMixin
  File "/usr/lib/python3.9/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.network.session import PipSession
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/session.py", line 26, in <module>
    from pip._internal.network.auth import MultiDomainBasicAuth
  File "/usr/lib/python3.9/site-packages/pip/_internal/network/auth.py", line 34, in <module>
    import keyring  # noqa
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/__init__.py", line 1, in <module>
    from .core import (
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/core.py", line 186, in <module>
    init_backend()
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/core.py", line 90, in init_backend
    filter(limit, backend.get_all_keyring()),
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/util/__init__.py", line 22, in wrapper
    func.always_returns = func(*args, **kwargs)
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/backend.py", line 214, in get_all_keyring
    return list(rings)
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/util/__init__.py", line 33, in suppress_exceptions
    for callable in callables:
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/util/properties.py", line 26, in __get__
    return self.fget.__get__(None, owner)()
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/backend.py", line 68, in viable
    cls.priority
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/util/properties.py", line 26, in __get__
    return self.fget.__get__(None, owner)()
  File "/home/daboross/.local/lib/python3.9/site-packages/keyring/backends/kwallet.py", line 50, in priority
    bus.get_object(cls.bus_name, cls.object_path)
  File "/usr/lib64/python3.9/site-packages/dbus/bus.py", line 241, in get_object
    return self.ProxyObjectClass(self, bus_name, object_path,
  File "/usr/lib64/python3.9/site-packages/dbus/proxies.py", line 250, in __init__
    self._named_service = conn.activate_name_owner(bus_name)
  File "/usr/lib64/python3.9/site-packages/dbus/bus.py", line 182, in activate_name_owner
    self.start_service_by_name(bus_name)
  File "/usr/lib64/python3.9/site-packages/dbus/bus.py", line 277, in start_service_by_name
    return (True, self.call_blocking(BUS_DAEMON_NAME, BUS_DAEMON_PATH,
  File "/usr/lib64/python3.9/site-packages/dbus/connection.py", line 652, in call_blocking
    reply_message = self.send_message_with_reply_and_block(
  File "/usr/lib64/python3.9/site-packages/dbus/exceptions.py", line 47, in __init__
    def __init__(self, *args, **kwargs):
KeyboardInterrupt

์—ฌ๊ธฐ์— ์‹ ๊ณ  ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด pip์˜ ํ‚ค๋ง ํ†ตํ•ฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ด์ œ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. # 8687์€ pip๊ฐ€ ํ‚ค๋ง์—์„œ ๋ฌผ๊ฑด์„ ์กฐํšŒ ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ํฌ๊ฒŒ ๋‚ฎ์ถ”๊ณ  # 8719๋Š” ์˜ตํŠธ ์ธ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์˜ ์ •๋ณด๋ฅผ ์œ„ํ•ด ํ‚ค๋ง ๋ชจ๋“ˆ์„ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ๋“  ๊ฐ€์ ธ ์˜ค๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ช…์‹œ ์ ์œผ๋กœ ํ‚ค๋ง ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์˜ฌ๋ฐ”๋ฅธ ํ™˜๊ฒฝ์—์„œ ๊ธด ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ ธ ์˜ค๊ธฐ ํƒ€์ด๋ฐ์„ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค : time python3 -c "import keyring" . ๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์›๊ฒฉ์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  ๊ทธ๋ž˜ํ”ฝ ๋กœ๊ทธ์ธ ์„ธ์…˜์ด์—†๋Š” Fedora 32 ์‹œ์Šคํ…œ์—์„œ 25 ์ดˆ ์ •๋„ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ์ง์ ‘์ ์ธ ์›์ธ์€ ํ‚ค๋ง์ด ๊ฐ€์ ธ ์˜ค๊ธฐ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ตญ org.kde.kwalletd5์— DBus ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ณ  ๋งค์šฐ ๋Š๋ฆฌ๊ฒŒ ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ๋ณต์ œ (๋ฐ ์Šคํ†จ ์žฌํ˜„) ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

>>> import dbus
>>> from dbus.mainloop.glib import DBusGMainLoop
>>> bus = dbus.SessionBus(mainloop=DBusGMainLoop())
>>> bus.get_object('org.kde.kwalletd5', '/modules/kwalletd5')

ํ‚ค๋ง ์ž์ฒด์—์„œ์ด ์ฝ”๋“œ๋Š” priority() ๋ฉ”์†Œ๋“œ์˜ keyring / backends / kwallet.py์— ์žˆ์Šต๋‹ˆ๋‹ค. kwalletd๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ด ์•„๋‹ˆ๊ณ  ์‹œ์ž‘ํ•  ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ DBus ์ž์ฒด ๋˜๋Š” Python DBus ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด์—์„œ ๊ธด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๋Š” ํ‚ค๋ง ๋ชจ๋“ˆ์˜ ์ „์ฒด ๊ฐ€์ ธ ์˜ค๊ธฐ๊ฐ€ ๋‹จ์ง€ ์‚ฌ์šฉ์ด ์•„๋‹Œ ๋ชจ๋“  ๋ช…๋ น ํ–‰ ํ”Œ๋ž˜๊ทธ์—์„œ ์กฐ๊ฑด๋ถ€ ๋ฐ ๊ฒŒ์ดํŠธ๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์˜ ์ •๋ณด๋ฅผ ์œ„ํ•ด ํ‚ค๋ง ๋ชจ๋“ˆ์„ ๋ฌด์—‡์ด๋“  ๊ฐ€์ ธ ์˜ค๋ฉด ์˜ฌ๋ฐ”๋ฅธ ํ™˜๊ฒฝ์—์„œ ๊ธด ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ •๋ณด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ‚ค๋ง ๋ชจ๋“ˆ ์ž์ฒด์˜ ์ฃผ์š” ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ˆ˜์ž…ํ’ˆ์€ ์ €๋ ดํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ๋ฒ„๊ทธ๋กœ ์ œ๊ธฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” pip์— ๋Œ€ํ•œ ์šฐ๋ฆฌ์˜ ๊ณ„ํš์ด์ด ํ–‰๋™์˜ ์ตœ์•…์˜ ํ–‰๋™์„ ์™„ํ™”ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๊ถ๊ทน์ ์œผ๋กœ ์ด๊ฒƒ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ํ‚ค๋ง์˜ ์œ ์ง€ ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ keyring์— ๋Œ€ํ•œ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ์— ๋งํฌ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋“ค์ดํ•˜๋Š” ์ผ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ด๊ฒƒ์— ๋งž์€ pip ์‚ฌ์šฉ์ž์—๊ฒŒ ์กฐ์–ธ์„ ์ œ๊ณต ํ•  ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

FWIW, ์ด๊ฒƒ์„ ๋ˆ„๋ฅด๋Š” ์‚ฌ์šฉ์ž๋ฅผ์œ„ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์—ฌ๊ธฐ์— ์„ค๋ช… ๋œ๋Œ€๋กœ ํ‚ค๋ง์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค : https://github.com/jaraco/keyring#disabling -keyring

๊ฑฐ๊ธฐ์—์„œ ๋ฒ„๊ทธ๋กœ ์ œ๊ธฐ ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š”

์˜ˆ : https://github.com/jaraco/keyring/issues/403

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