Ipython: '이벀트 λ£¨ν”„μ—μ„œ μ²˜λ¦¬λ˜μ§€ μ•Šμ€ μ˜ˆμ™Έ'(WinError 995)

에 λ§Œλ“  2019λ…„ 12μ›” 16일  Β·  43μ½”λ©˜νŠΈ  Β·  좜처: ipython/ipython

μ΅œκ·Όμ— ipython을 μ‚¬μš©ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 이제 λ³€μˆ˜ μ •μ˜μ™€ 같은 κ°„λ‹¨ν•œ μž‘μ—…μ„ ν¬ν•¨ν•˜μ—¬ λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ν•  λ•Œ μ’…μ’… 이 λ©”μ‹œμ§€λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

Unhandled exception in event loop:
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
    f.result()  # may raise
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 808, in _poll
    value = callback(transferred, key, ov)
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 457, in finish_recv
    raise ConnectionResetError(*exc.args)

Exception [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
Press ENTER to continue...

이 λ©”μ‹œμ§€λŠ” λ™μΌν•œ λͺ…λ Ή(예: xyz = "hello")에 λŒ€ν•΄ ν‘œμ‹œλ  λ•Œλ„ μžˆμ§€λ§Œ ν‘œμ‹œλ˜μ§€ μ•Šμ„ λ•Œλ„ μžˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ 뭘 잘λͺ»ν–ˆλŠ”지 λͺ¨λ₯΄κ² μ–΄. 일반 ν†΅μ—­μ‚¬λŠ” 이 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€. 3.8을 μ‚¬μš©ν•˜κ³  cmdλ₯Ό 톡해 ipython 7.10.2λ₯Ό μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€.

감사 ν•΄μš”.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λͺ‡ 가지 쑰사 후에 Python의 asyncio에 λŒ€ν•œ Windows ν”Œλž«νΌ κ΅¬ν˜„μ˜ 버그라고 μƒκ°ν•©λ‹ˆλ‹€.

Python 3.8.1(tags/v3.8.1:1b293b6, 2019λ…„ 12μ›” 18일, 23:11:46) [MSC v.1916 64λΉ„νŠΈ(AMD64)] Windows 10 버전 1809(OS λΉŒλ“œ 17763.1039)

1) νŒŒμΌμ— μΆ”κ°€BaseProactorEventLoop._loop_self_reading ν•¨μˆ˜μ˜ Libasyncioproactor_events.py ν–‰ 768 λ‹€μŒ μ½”λ“œ:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

2) ν…ŒμŠ€νŠΈ. 더 이상 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€...

νŽΈμ§‘: 이 νŠΉμ • μ½”λ“œ μ»¨ν…μŠ€νŠΈμ—μ„œ λŒ€μ‹  if self._stopping: return λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€(쑰금 더 빨라야 함)

EDIT2: bugs.python.org의 버그 및 이 였λ₯˜μ˜ 원인에 λŒ€ν•œ μ„€λͺ…(λ‹€λ₯Έ μ‚¬λžŒμ΄ 발견): https://bugs.python.org/issue39010#msg362076

λͺ¨λ“  43 λŒ“κΈ€

ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚·μ„ 2.x둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜μ—¬ 이것이 원인인지 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚· 2.0.10으둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν–ˆλŠ”λ° μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. 정말 κ³ λ§™μŠ΅λ‹ˆλ‹€.
μ œκ°€ μ™„μ „νžˆ 처음인데 무엇이 λ°”λ€Œμ—ˆλŠ”μ§€ 말씀해 μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?
그리고 버전을 λ°˜λŒ€λ‘œ ν•΄μ„œ λ¬Έμ œκ°€ 생길 수 μžˆμŠ΅λ‹ˆκΉŒ?

Prompt_toolkit 3(IPython이 μ—¬λŸ¬ 쀄 νŽΈμ§‘ 및 ꡬ문 색상 지정을 ν—ˆμš©ν•˜λŠ” 라이브러리)은 IPython 7.10 직전에 λ¦΄λ¦¬μŠ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ™μ‹œ ν”„λ‘œκ·Έλž˜λ°μ„ μˆ˜ν–‰ν•˜λ©΄ asyncio eventloopλ₯Ό μ‚¬μš©ν•˜μ—¬ 더 λ©‹μ§€κ²Œ μž¬μƒν•˜λ €κ³  ν•©λ‹ˆλ‹€. μš°λ¦¬λŠ” IPython이 ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚· 3κ³Ό ν˜Έν™˜λ˜λ„λ‘ μ΅œμ„ μ„ λ‹€ν–ˆμ§€λ§Œ, μš°λ¦¬κ°€ 가지고 μžˆμ§€ μ•Šμ€ λͺ‡ 가지 극단적인 κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  것이 prompt_toolkit 2.xμ—μ„œ μ œλŒ€λ‘œ μž‘λ™ν•΄μ•Ό ν•˜λ©° μœ„μ˜ 였λ₯˜κ°€ λ°œμƒν•œ 이유λ₯Ό μ•Œμ•„ λ‚΄λ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.

ν˜„μž¬ 였λ₯˜λ‘œ 이것이 μ •ν™•νžˆ μ–΄λ””μ—μ„œ μ™”λŠ”μ§€ μ•ŒκΈ°λŠ” μ–΄λ ΅μ§€λ§Œ λ‹€μŒ λͺ‡ 가지 λ¦΄λ¦¬μŠ€μ—μ„œ κ·Έ 이유λ₯Ό 쒁힐 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

이 λ¬Έμ œκ°€ μ–Έμ œ 해결될지 μ•Œ 수 μžˆμŠ΅λ‹ˆκΉŒ?

λˆ„κ΅°κ°€κ°€ μ™œ 이런 일이 λ°œμƒν•˜κ³  ν•΄κ²° 방법이 무엇인지 쑰사할 μ‹œκ°„μ„ 찾을 λ•Œ; 잠재적으둜 Windows μ‹œμŠ€ν…œμ„ VM으둜 μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ€ 특히 λŠλ¦½λ‹ˆλ‹€.

λΆˆν–‰νžˆλ„ λͺ¨λ“  일반 μœ μ§€ κ΄€λ¦¬μž(λŒ€λΆ€λΆ„ λ‚˜)λŠ” μ—¬κ°€ μ‹œκ°„μ— 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” λ“œλ¬Έ μΌμž…λ‹ˆλ‹€. λ‚˜λŠ” λ˜ν•œ Windows 기계가 μ—†μŠ΅λ‹ˆλ‹€.

λ‹¨μ„œλ₯Ό 찾으면 항상 이λ₯Ό μ΄‰λ°œν•˜λŠ” 일련의 행동이 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

λͺ‡ 가지 쑰사 후에 Python의 asyncio에 λŒ€ν•œ Windows ν”Œλž«νΌ κ΅¬ν˜„μ˜ 버그라고 μƒκ°ν•©λ‹ˆλ‹€.

Python 3.8.1(tags/v3.8.1:1b293b6, 2019λ…„ 12μ›” 18일, 23:11:46) [MSC v.1916 64λΉ„νŠΈ(AMD64)] Windows 10 버전 1809(OS λΉŒλ“œ 17763.1039)

1) νŒŒμΌμ— μΆ”κ°€BaseProactorEventLoop._loop_self_reading ν•¨μˆ˜μ˜ Libasyncioproactor_events.py ν–‰ 768 λ‹€μŒ μ½”λ“œ:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

2) ν…ŒμŠ€νŠΈ. 더 이상 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€...

νŽΈμ§‘: 이 νŠΉμ • μ½”λ“œ μ»¨ν…μŠ€νŠΈμ—μ„œ λŒ€μ‹  if self._stopping: return λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€(쑰금 더 빨라야 함)

EDIT2: bugs.python.org의 버그 및 이 였λ₯˜μ˜ 원인에 λŒ€ν•œ μ„€λͺ…(λ‹€λ₯Έ μ‚¬λžŒμ΄ 발견): https://bugs.python.org/issue39010#msg362076

MrEightFive μˆ˜μ •ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ .. 그것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€

@MrEightFive κ°μ‚¬ν•©λ‹ˆλ‹€. 방금 λ³€κ²½ 사항을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. 잘 μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@MrEightFive Python 3.8.2μ—μ„œλ„ μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

κ·€ν•˜μ˜ μ†”λ£¨μ…˜μ— λŒ€ν•΄ @MrEightFive 및 @Carreau μ—κ²Œ κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€. 저도 같은 λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

@MrEightFive Python 3.8.2μ—μ„œλ„ μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

같은 긍정적인 κ²½ν—˜

같은, κ°μ‚¬ν•©λ‹ˆλ‹€!

이것도 λ§ˆμ£Όν•©λ‹ˆλ‹€. @MrEightFive μˆ˜μ • 사항이 무엇인지 μ•ˆλ‹€λ©΄ CPython에 pull μš”μ²­μ„ μ œμΆœν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? :λˆˆμ§“:

@segevfiner
λ‚˜λŠ” CPython 개발 그룹의 ꡬ성원이 μ•„λ‹ˆλ©°, κ·Έλ“€μ˜ λ¬Έμ„œμ— λ”°λ₯΄λ©΄ 그듀이 당신을 ν—ˆμš©ν•˜κΈ° 전에 (κ΄‘λ²”μœ„ν•œ) 확인 ν”„λ‘œμ„ΈμŠ€κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ 그것을 λ§Œλ“€μ—ˆμ„μ§€λΌλ„ 단일 ν’€ λ¦¬ν€˜μŠ€νŠΈμ— λŒ€ν•΄ κ²€ν† ν•  κ°€μΉ˜κ°€ μ—†μŠ΅λ‹ˆλ‹€. 더 쉬웠닀면.

λ‘˜μ§Έ, 이에 λŒ€ν•œ 버그 λ³΄κ³ μ„œλŠ” λ‹€λ₯Έ 제λͺ©μœΌλ‘œ bugs.python.org(μœ„μ˜ λ‚΄ κ²Œμ‹œλ¬Όμ—μ„œ EDIT2 μ°Έμ‘°)에 이미 μ‘΄μž¬ν•˜μ§€λ§Œ 이 버그에 λŒ€ν•œ μ΄μœ λŠ” λ‚΄κ°€ μ•Œμ•„λ‚Έ λŒ€λ‘œ μ •ν™•νžˆ λͺ…μ‹œλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ³΅μ œν•  ν•„μš”κ°€ μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ…‹μ§Έ, λ‚΄ ν•΄κ²° 방법이 μž‘λ™ν•˜μ§€λ§Œ λΆ€μž‘μš©μ΄ μ—†λ‹€λŠ” 보μž₯은 μ—†μŠ΅λ‹ˆλ‹€(νŠΉμ • λ²„μ „μ˜ asyncioμ—μ„œ 이벀트 루프 μ’…λ£Œκ°€ κ΅¬ν˜„λ˜λŠ” 방식과 κ΄€λ ¨ν•˜μ—¬ 일뢀 쒅속성이 있으며 변경될 수 있음). CPython의 asyncio ν…ŒμŠ€νŠΈ(3.8.1μ—μ„œ)λ₯Ό μ‹€ν–‰ν–ˆλŠ”λ° ν†΅κ³Όν–ˆμ§€λ§Œ κ·Έ 이상은 μ‘°μ‚¬ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ‹€μ œλ‘œ asyncioμ—μ„œ μž‘μ—…ν•˜κ³  CPython μ½”λ“œμ— μ •ν†΅ν•œ μ‚¬λžŒμ΄ 이λ₯Ό ν™•μΈν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

@MrEightFive μ‹€μ œλ‘œλŠ” 생각보닀 κ°„λ‹¨ν•©λ‹ˆλ‹€. PR을 μ œμΆœν•˜κ³  CLA에 μ„œλͺ…ν•œ λ‹€μŒ μ½”λ“œ κ²€ν†  등을 기닀리면 λ©λ‹ˆλ‹€. GitHub의 λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ. CPython은 μ’…μ’… pull μš”μ²­μ„ κ²€ν† ν•˜λŠ” μ‚¬λžŒλ“€μ΄ μΆ©λΆ„ν•˜μ§€ μ•Šμ€ 것 κ°™μ§€λ§Œ λ„ˆλ¬΄ λ§Žμ€ μ‚¬λžŒλ“€μ΄ 맀달렀 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” Python 버그 좔적기 λ¬Έμ œμ— λŒ€ν•΄ μ œμ•ˆλœ ν•΄κ²° 방법을 κ²Œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν™•μ‹€ν•˜μ§€ μ•Šμ€ κ²½μš°μ—λ„ 홍보/μ΄μŠˆμ—μ„œ κ·Έλ ‡κ²Œ λ§ν•˜κ³  이에 λŒ€ν•œ 우렀λ₯Ό μ œκΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 μ’…μ’… 더 μΉœμˆ™ν•œ μ‚¬λžŒμ΄ 문제λ₯Ό μ‚΄νŽ΄λ³΄κ³  μˆ˜μ • 사항을 ν™•μΈν•˜κ±°λ‚˜ 더 λ‚˜μ€/μ˜¬λ°”λ₯Έ μˆ˜μ • 사항을 μ œκ³΅ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 그것은 단지 μ œμ•ˆμΌ 뿐이며, μ •λ§λ‘œ λ§ˆμŒμ— λ“œλŠ” κ²½μš°μ—λ§Œ ν•˜μ‹­μ‹œμ˜€.

이 였λ₯˜λŠ” promt_toolkit을 μ‚¬μš©ν•˜λŠ” λ™μ•ˆμ—λ„ λ°œμƒν–ˆμ§€λ§Œ μ†”λ£¨μ…˜: MrEightyFiveλŠ” ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν•˜κ³  λ§Žμ€ μ‹œκ°„μ„ μ ˆμ•½ν–ˆμŠ΅λ‹ˆλ‹€.

(MrEightFiveκ°€ μ œμ•ˆν•œ λŒ€λ‘œ) proactor_events.py에 μ½”λ“œλ₯Ό 좔가해도 도움이 λ˜μ§€ μ•Šμ•˜μ§€λ§Œ pip install --upgrade prompt-toolkit==2.0.10 λŠ” 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. Win10 Python38.

KyryloKaralyus의 μ†”λ£¨μ…˜μ΄ μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. ν•œ 가지 μ£Όμ˜ν•  점 - μ²˜μŒμ— μ‹€μˆ˜λ‘œ (λ§ˆμ§€λ§‰μ— 0이 λˆ„λ½λ¨) pip install --upgrade prompt-toolkit==2.0.1을 μ‹€ν–‰ν–ˆκ³  이둜 인해 였λ₯˜κ°€ λ…ΌμŠ€ν†±μœΌλ‘œ λ°œμƒν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 터미널을 μ£½μ—¬μ•Ό ν–ˆλ‹€.

(MrEightFiveκ°€ μ œμ•ˆν•œ λŒ€λ‘œ) proactor_events.py에 μ½”λ“œλ₯Ό 좔가해도 도움이 λ˜μ§€ μ•Šμ•˜μ§€λ§Œ pip install --upgrade prompt-toolkit==2.0.10 λŠ” 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. Win10 Python38.

그것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€.

CPython에 λŒ€ν•œ pull μš”μ²­μ΄ λ§ˆμΉ¨λ‚΄ μ œμ•ˆλ˜μ—ˆμŠ΅λ‹ˆλ‹€: bpo-39010: 루프 μ’…λ£Œ ν›„ μ·¨μ†Œλœ λ―Έλž˜μ— λŒ€ν•œ 였λ₯˜ λ¬΄μ‹œ.

BTW python이 MS Storeμ—μ„œ μ„€μΉ˜λœ 경우 proactor_events.py λ₯Ό μˆ˜μ •ν•˜λŠ” 것은 맀우 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

图片

λ‚˜λŠ” μ†Œμœ μžλ₯Ό λ‚˜λ‘œ λ³€κ²½ν•˜κ³  λ‚˜μ™€ "λͺ¨λ“  μ‚¬λžŒ"을 전체 μ œμ–΄λ‘œ μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ•ˆμ „ λͺ¨λ“œ 및 "κ΄€λ¦¬μž κΆŒν•œμœΌλ‘œ λ‹€μ‹œ μ‹œλ„"μ—μ„œλ„ νŒŒμΌμ„ νŽΈμ§‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚· 2.0.10으둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν–ˆλŠ”λ° μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. 정말 κ³ λ§™μŠ΅λ‹ˆλ‹€.

pip install prompt-toolkit==2.0.10

python 3.8.3, ipython 7.13.0, prompt_toolkit 3.0.5μ—μ„œ 이 μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€.

BTW python이 MS Storeμ—μ„œ μ„€μΉ˜λœ 경우 proactor_events.py λ₯Ό μˆ˜μ •ν•˜λŠ” 것은 맀우 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

더 μ‰¬μš΄ 방법은 전체 asyncio νŒ¨ν‚€μ§€λ₯Ό ν”„λ‘œμ νŠΈμ— λ³΅μ‚¬ν•˜κ³  κ±°κΈ°μ—μ„œ μˆ˜μ •ν•œ λ‹€μŒ Python에 μ˜μ‘΄ν•˜μ—¬ 전체 λͺ¨λ“ˆμ„ μ„€λ„μž‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. Windows μŠ€ν† μ–΄ 앱은 _맀우_ 잘 λ³΄ν˜Έλ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” λ˜ν•œ CPython νŒ¨μΉ˜μ— λŒ€ν•œ 후속 쑰치λ₯Ό μ·¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λͺ‡ 가지 쑰사 후에 Python의 asyncio에 λŒ€ν•œ Windows ν”Œλž«νΌ κ΅¬ν˜„μ˜ 버그라고 μƒκ°ν•©λ‹ˆλ‹€.

Python 3.8.1(tags/v3.8.1:1b293b6, 2019λ…„ 12μ›” 18일, 23:11:46) [MSC v.1916 64λΉ„νŠΈ(AMD64)] Windows 10 버전 1809(OS λΉŒλ“œ 17763.1039)

  1. νŒŒμΌμ— μΆ”κ°€BaseProactorEventLoop._loop_self_reading ν•¨μˆ˜μ˜ Libasyncioproactor_events.py ν–‰ 768 λ‹€μŒ μ½”λ“œ:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

  1. ν…ŒμŠ€νŠΈ. 더 이상 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€...

νŽΈμ§‘: 이 νŠΉμ • μ½”λ“œ μ»¨ν…μŠ€νŠΈμ—μ„œ λŒ€μ‹  if self._stopping: return λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€(쑰금 더 빨라야 함)

EDIT2: bugs.python.org의 버그 및 이 였λ₯˜μ˜ 원인에 λŒ€ν•œ μ„€λͺ…(λ‹€λ₯Έ μ‚¬λžŒμ΄ 발견): https://bugs.python.org/issue39010#msg362076

λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆλ‹€!!
κ³ λ§ˆμ›Œ!!

ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚· 2.0.10으둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν–ˆλŠ”λ° μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. 정말 κ³ λ§™μŠ΅λ‹ˆλ‹€.

pip install prompt-toolkit==2.0.10

덕뢄에 이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€.

conda μ„€μΉ˜ prompt_toolkit=2.0.10

ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚·μ„ 2.x둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜μ—¬ 이것이 원인인지 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

이것도 도움이 λ˜μ—ˆμ–΄μš”, κ°μ‚¬ν•©λ‹ˆλ‹€!

pip install --upgrade prompt-toolkit==2.0.10

정말 κ°μ‚¬ν•©λ‹ˆλ‹€. λ§ˆμΉ¨λ‚΄ μœ„μ˜ μ†”λ£¨μ…˜μ΄ λ‚΄ μž₯μΉ˜μ—μ„œ μž‘λ™ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€!!

λ‹€μŒμ„ μ‹œλ„ν–ˆμ§€λ§Œ 항상 [Errno 13] κΆŒν•œμ΄ κ±°λΆ€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

  1. νŒŒμΌμ— μΆ”κ°€BaseProactorEventLoop._loop_self_reading ν•¨μˆ˜μ˜ Libasyncioproactor_events.py ν–‰ 768 λ‹€μŒ μ½”λ“œ:

이것은 3.9rc2μ—μ„œ μˆ˜μ •λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@imba-tjd 이전 Python λ²„μ „μœΌλ‘œ λ‹€μ‹œ ν¬νŒ…λ©λ‹ˆκΉŒ? (μ•„λ‹ˆλ©΄ 이미 μžˆλ‚˜μš”?)

파이썬 λ²„κ·Έμ—μ„œ tλŠ” 3.8μ—μ„œ 백포트된 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

3.9rc2인데도 μ—λŸ¬κ°€ λ‚˜λ„€μš”...

ν”„λ‘¬ν”„νŠΈ νˆ΄ν‚·μ„ 2.x둜 λ‹€μš΄κ·Έλ ˆμ΄λ“œν•˜μ—¬ 이것이 원인인지 확인할 수 μžˆμŠ΅λ‹ˆκΉŒ?

도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€.

이것이 이제 Python 3.8.6 및 3.9μ—μ„œ μˆ˜μ •λ˜μ—ˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

λͺ‡ 가지 쑰사 후에 Python의 asyncio에 λŒ€ν•œ Windows ν”Œλž«νΌ κ΅¬ν˜„μ˜ 버그라고 μƒκ°ν•©λ‹ˆλ‹€.

Python 3.8.1(tags/v3.8.1:1b293b6, 2019λ…„ 12μ›” 18일, 23:11:46) [MSC v.1916 64λΉ„νŠΈ(AMD64)] Windows 10 버전 1809(OS λΉŒλ“œ 17763.1039)

  1. νŒŒμΌμ— μΆ”κ°€BaseProactorEventLoop._loop_self_reading ν•¨μˆ˜μ˜ Libasyncioproactor_events.py ν–‰ 768 λ‹€μŒ μ½”λ“œ:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

  1. ν…ŒμŠ€νŠΈ. 더 이상 였λ₯˜κ°€ μ—†μŠ΅λ‹ˆλ‹€...

νŽΈμ§‘: 이 νŠΉμ • μ½”λ“œ μ»¨ν…μŠ€νŠΈμ—μ„œ λŒ€μ‹  if self._stopping: return λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€(쑰금 더 빨라야 함)

EDIT2: bugs.python.org의 버그 및 이 였λ₯˜μ˜ 원인에 λŒ€ν•œ μ„€λͺ…(λ‹€λ₯Έ μ‚¬λžŒμ΄ 발견): https://bugs.python.org/issue39010#msg362076

Windows 10μ—μ„œ Anacondaλ₯Ό μ‚¬μš©ν•˜μ—¬ Python 3.8.3을 μƒˆλ‘œ μ„€μΉ˜ν•  λ•Œ 이 λ¬Έμ œκ°€ λ°œμƒν–ˆμœΌλ©° @MrEightFive 의 ν•΄κ²° 방법이 μ™„λ²½ν•˜κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€!

핍 μ„€μΉ˜ --μ—…κ·Έλ ˆμ΄λ“œ ν”„λ‘¬ν”„νŠΈ 도ꡬ ν‚€νŠΈ==2.0.10
이것은 Windows Anaconda3-2020.11 λ²„μ „μ—μ„œ μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

이것은 (거의) Windows 10, Anaconda Individual Edition 2020.11μ—μ„œ μ €μ—κ²Œ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€.

λ™λ£Œ Anaconda μ‚¬μš©μžλΌλ©΄ 이 μ—…λ°μ΄νŠΈλ₯Ό conda ν™˜κ²½ λ‚΄μ—μ„œ μœ μ§€ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
conda install -c conda-forge prompt_toolkit

λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€.

try-except-block 을 μ‹€ν–‰ν•œ 직후 에 λ‚˜νƒ€λ‚©λ‹ˆλ‹€. λ‹€λ₯Έ κ²½μš°μ—λŠ” μ˜ˆμΈ‘ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

더 λ§Žμ€ μ‚¬μš©μžκ°€ 찾을 수 μžˆλ„λ‘ 독일어 였λ₯˜ ν…μŠ€νŠΈλ₯Ό μΆ”κ°€ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€. (Windows 10 Pro, 버전 2004)

이벀트 λ£¨ν”„μ—μ„œ μ²˜λ¦¬λ˜μ§€ μ•Šμ€ μ˜ˆμ™Έ:
파일 "c:usersuserappdatalocalprogramspythonpython38libasyncioproactor_events.py", 768ν–‰, _loop_self_reading
f.result() # 올릴 수 있음
파일 "c:usersuserappdatalocalprogramspythonpython38libasynciowindows_events.py", 808ν–‰, _poll
κ°’ = 콜백(전솑됨, ν‚€, ov)
파일 "c:usersuserappdatalocalprogramspythonpython38libasynciowindows_events.py", 457ν–‰, finish_recv
ConnectionResetError(*exc.args) λ°œμƒ

μ˜ˆμ™Έ [WinError 995] Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen
κ³„μ†ν•˜λ €λ©΄ ENTERλ₯Ό λˆ„λ₯΄μ„Έμš”...

μŠ¬ν”„κ²Œλ„

conda install -c conda-forge prompt_toolkit

λ‚˜λ₯Ό μœ„ν•΄ 문제λ₯Ό ν•΄κ²°ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

@musm , prompt_toolkit v2λ₯Ό 지정해야 ν•©λ‹ˆλ‹€.

conda install -c conda-forge prompt_toolkit=2

μ €λŠ” Anaconda 2020.11을 μ‚¬μš© μ€‘μž…λ‹ˆλ‹€.

conda install -c conda-forge prompt_toolkit=2

λŒ€κ·œλͺ¨ 좩돌둜 μ΄μ–΄μ§‘λ‹ˆλ‹€.

> conda install -c conda-forge prompt_toolkit=2
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: \
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
Examining qtpy:   1%|β–Œ                                                                 | 3/327 [00:00<00:20, 16.00it/s]\Examining statsmodels:   1%|β–Œ                                                          | 3/327 [00:00<00:20, 16.00it/s]/Examining ipython_genutils:   3%|β–ˆβ–Œ                                                   | 10/327 [00:07<04:17,  1.23it/s]|Examining pyflakes:   5%|β–ˆβ–ˆβ–‰                                                          | 16/327 [00:10<02:19,  2.22it/s]|Examining zope.event:   7%|β–ˆβ–ˆβ–ˆβ–ˆβ–                                                      | 23/327 [00:13<02:18,  2.20it/s]\Examining vs2015_runtime:  11%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                                                 | 36/327 [00:17<02:29,  1.94it/s]\Examining mpir:  15%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                                                       | 48/327 [01:32<37:15,  8.01s/it]\Examining krb5:  17%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž                                                     | 57/327 [01:38<06:35,  1.47s/it]-Examining prometheus_client:  18%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                                          | 60/327 [01:42<09:06,  2.05s/it]|Examining cython:  19%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                                                  | 63/327 [01:47<08:58,  2.04s/it]-Examining flake8:  21%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                                                  | 68/327 [02:37<24:45,  5.73s/it]-Examining pytest:  25%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š                                               | 82/327 [03:30<30:07,  7.38s/it]-Examining openpyxl:  26%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š                                             | 85/327 [03:51<25:16,  6.27s/it]\Examining beautifulsoup4:  32%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž                                    | 105/327 [04:08<03:40,  1.01it/s]|Examining html5lib:  35%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰                                       | 114/327 [04:11<01:34,  2.25it/s]/Examining console_shortcut:  35%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                                 | 114/327 [04:11<01:34,  2.25it/s]-Examining qt:  37%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                                         | 122/327 [04:14<01:09,  2.94it/s]/Examining wheel:  38%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                                       | 125/327 [04:14<00:54,  3.71it/s]|Examining greenlet:  39%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                                    | 128/327 [04:18<03:24,  1.03s/it]\Examining bokeh:  40%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                                      | 130/327 [04:19<02:27,  1.33it/s]|Examining bleach:  40%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š                                     | 131/327 [04:37<19:29,  5.97s/it]|Examining entrypoints:  40%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                                  | 132/327 [04:39<15:25,  4.75s/it]|Examining et_xmlfile:  40%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                                  | 132/327 [04:39<15:25,  4.75s/it]/Examining rtree:  42%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                                    | 136/327 [04:39<07:31,  2.37s/it]-Examining backcall:  42%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰                                   | 136/327 [04:39<07:31,  2.37s/it]\Examining libssh2:  45%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                                 | 148/327 [04:58<06:13,  2.09s/it]\Examining path:  52%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                              | 171/327 [05:54<23:54,  9.19s/it]/Examining pywavelets:  53%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                           | 172/327 [05:55<16:51,  6.53s/it]-Examining importlib_metadata:  54%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                      | 178/327 [06:06<07:34,  3.05s/it]-Examining prompt_toolkit=2:  55%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                       | 179/327 [06:07<07:56,  3.22s/it]-Examining seaborn:  56%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                          | 183/327 [06:17<06:30,  2.71s/it]\Examining jupyterlab_widgets:  57%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Ž                     | 185/327 [06:21<05:57,  2.52s/it]|Examining jdcal:  58%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                          | 189/327 [06:21<02:55,  1.27s/it]-Examining widgetsnbextension:  59%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                    | 193/327 [06:22<01:18,  1.70it/s]-Examining multipledispatch:  64%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                  | 210/327 [07:07<03:36,  1.85s/it]-Examining yaml:  68%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                    | 222/327 [07:19<01:11,  1.46it/s]-Examining libxslt:  70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œ                  | 228/327 [07:31<03:34,  2.17s/it]\Examining python-jsonrpc-server:  70%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰              | 229/327 [07:31<02:30,  1.54s/it]|Examining typed-ast:  71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Š                 | 232/327 [07:32<01:01,  1.54it/s]\Examining @/win-64::__archspec==1=x86_64:  71%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‰           | 232/327 [07:32<01:01,  1.54it/s]|Examining urllib3:  73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–                | 238/327 [07:42<03:30,  2.36s/it]/Examining backports:  73%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ                | 239/327 [07:47<04:20,  2.96s/it]\Examining mccabe:  76%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–          

@musmλ‹˜ , 이것은 전체 Anaconda λ°°ν¬νŒμ„ μ‚¬μš©ν•  λ•Œμ˜ 단점 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. λͺ¨λ“ˆμ΄ λ„ˆλ¬΄ λ§Žμ•„μ„œ 제곡된 λ°°ν¬νŒμ—μ„œ λ²—μ–΄λ‚˜λ©΄ λͺ¨λ“  쒅속성을 λ™μ‹œμ— ν•΄κ²°ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹  미리 μ„€μΉ˜λœ λͺ¨λ“ˆμ΄ μ—†λŠ” Conda인 Minicondaλ₯Ό μ‚¬μš©ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 ν”„λ‘œμ νŠΈμ— ν•„μš”ν•œ λͺ¨λ“ˆλ§Œ ν¬ν•¨ν•˜λŠ” ν™˜κ²½μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것을 μ‹œλ„ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ Anacondaλ₯Ό μ œκ±°ν•˜κ³  λŒ€μ‹  Minicondaλ₯Ό μ„€μΉ˜ν•˜μ§€ μ•Šκ³ λ„ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. IE νŠΉμ • λͺ¨λ“ˆλ§Œ ν¬ν•¨ν•˜λŠ” μƒˆλ‘œμš΄ ν™˜κ²½μ„ μ²˜μŒλΆ€ν„° λ§Œλ“­λ‹ˆλ‹€. λ‹€μŒκ³Ό 같은 λͺ…λ ΉμœΌλ‘œ μ‹œλ„ν•΄ λ³΄μ‹­μ‹œμ˜€(정말 ν•„μš”ν•œ 것을 ν¬ν•¨ν•˜λ„λ‘ λͺ¨λ“ˆ 이름을 νŽΈμ§‘ν•˜μ‹­μ‹œμ˜€).

conda create -n <myenv> python ipython prompt_toolkit=2 jupyter pandas numpy scipy scikit-learn matplotlib
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰