ดูเหมือน 'python-shell-interpreter' ของคุณดูเหมือนจะไม่รองรับ readline


13

ฉันมีปัญหานี้กับ 25.1 และ Python 3.5 ของฉันบน Ubuntu 16.10 แต่ฉันไม่เห็นว่ามันถูกแก้ไขที่ใด สงสัยว่าสถานะล่าสุดคืออะไร การทำซ้ำ:

> emacs -Q --eval '(setq python-shell-interpreter "python3")'

แล้วก็

M-x run-python จะช่วยให้

Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native’ was t and "python3" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list.  Native completions have been disabled locally.

ผมเห็นความคิดหนึ่งที่ซึ่งM-x find-function python-shell-completion-native-tryจะดึงขึ้นฟังก์ชั่นจากส่วนลึก(/usr/local/share/emacs/25.1/lisp/progmodes/python.el.gzและบรรทัดสุดท้ายมากที่ควรจะเป็นและไม่ได้nil "_"))) nil "")))อีกบทสนทนาที่นี่พูดถึงการเปลี่ยนแปลงinputrc

ฉันเปลี่ยนไปใช้ผู้ใช้รายอื่นและฉันสามารถใช้ `run-python 'โดยไม่มีคำเตือนใด ๆ ปรากฎว่าเป็นการตั้งค่า readline ของฉัน Bash 4.3 เพิ่มคุณสมบัติ readline ใหม่: "ตั้งค่าสถิติสีบน" ที่ฉันมีใน. inputc การลบบรรทัดนั้นแก้ไขปัญหาของฉันฉันคิดว่านี่น่าจะทำซ้ำได้สำหรับทุกคน

มีใครรู้บ้างไหมว่าสิ่งล่าสุดคืออะไร BTW ที่รัน Python2 ( (setq org-babel-python-command "python2")) ไม่มีปัญหานี้


ข้อผิดพลาด Emacs ที่คุณเชื่อมโยงกับถูกทำเครื่องหมายว่าแก้ไขแล้วสำหรับ 25.2 (ยังไม่วางจำหน่าย) ดังนั้นคุณควรคาดหวังว่ามันจะยังคงปรากฏใน 25.1 คุณสามารถลองรุ่นทดลองใช้ (25.1.9x)
npostavs

รู้ว่าเมื่อ 25.2 ออกมา?
147.00

อาจจะเป็นเดือนหรือมากกว่านั้น? คุณสามารถลองทดสอบได้ (25.1.91) ตอนนี้alpha.gnu.org/gnu/emacs/pretest
npostavs

ฉันมีอาการเหมือนกัน ("python-shell-interpreter" ของคุณดูเหมือนจะไม่รองรับ readline ") ที่ใช้ Python 3.6.0 และ GNU Emacs 25.2 RC1 บน Windows 10 ดังนั้นปัญหายังไม่ได้รับการแก้ไข หรืออาจเป็นปัญหาที่แตกต่างกัน?
Martin

คำตอบ:


10

หากคุณไม่ต้องการรับ 25.2 rc คุณสามารถใช้การแก้ไขข้อบกพร่องโดยเพิ่มสิ่งนี้ลงในไฟล์ init.el ของคุณ:

(with-eval-after-load 'python
  (defun python-shell-completion-native-try ()
    "Return non-nil if can trigger native completion."
    (let ((python-shell-completion-native-enable t)
          (python-shell-completion-native-output-timeout
           python-shell-completion-native-try-output-timeout))
      (python-shell-completion-native-get-completions
       (get-buffer-process (current-buffer))
       nil "_"))))

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25753#44


ทำงานเหมือนจับใจ ขอบคุณสำหรับการแบ่งปัน.
dangom

2
ด้วยเหตุผลบางประการการเพิ่มสิ่งนี้(setq python-shell-completion-native-enable nil)ลงในinit.elไฟล์ของฉันก็ใช้งานได้โดยไม่ต้องใช้โค้ดข้างต้น
Guilherme Salomé

@ GuilhermeSaloméที่ไม่แสดงคำเตือน แต่คุณยังไม่เสร็จสมบูรณ์ หากคุณบน Windows, นั่นเป็นสิ่งที่ถูกต้องที่จะทำ
npostavs

5
แม้แต่ใน Emacs 26.1 ฉันยังได้รับปัญหานี้
Guilherme Salomé

1
เช่นเดียวกันกับ Emacs 26.2 และคำตอบนี้ก็ยังใช้ได้
Zoe Rowa

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.