ฉันจะเพิ่มการเติมแท็บลงใน Python shell ได้อย่างไร


125

เมื่อเริ่มแอปพลิเคชัน django โดยใช้python manage.py shellฉันจะได้รับเชลล์ InteractiveConsole - ฉันสามารถใช้การเติมแท็บ ฯลฯ

Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

เมื่อเพิ่งเริ่มใช้ตัวแปล python pythonจะไม่มีการทำให้แท็บสมบูรณ์

มีใครบอกฉันได้ไหมว่า django กำลังทำอะไรเพื่อให้ฉันมีคอนโซลแบบโต้ตอบหรือฉันต้องทำอะไรเพื่อเริ่มคอนโซลแบบโต้ตอบโดยไม่มีแอป django


1
เมื่อคุณพิมพ์ python คุณจะได้รับ >>> prompt ใช่ไหม? นั่นคือเชลล์แบบโต้ตอบ คำถามของคุณคืออะไร?
ล็อ

4
ไม่มีการเติมแท็บ นั่นคือปัญหา
ashchristopher

โปรดอัปเดตคำถามของคุณเพื่อระบุสิ่งนั้น
Daryl Spitzer

คำตอบ:


210

ฉันอาจจะพบวิธีที่จะทำ

สร้างไฟล์. pythonrc

# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

จากนั้นในไฟล์. bashrc ของคุณให้เพิ่ม

export PYTHONSTARTUP=~/.pythonrc

ดูเหมือนว่าจะได้ผล


2
สิ่งนี้ใช้ได้กับ Jython โดยที่ IPython และ bpython ไม่สามารถใช้งานได้ในปัจจุบัน
Skylar Saveland

1
ด้วยเหตุผลบางประการข้างต้นใช้ได้ผลสำหรับฉันใน Mac เครื่องเก่าที่มี "สิงโตภูเขา" แต่ใช้กับ Mac ใหม่ที่มี "el captan" ไม่ได้ ฉันต้องการsource ~/.bashrcทุกครั้งเพื่อให้มันใช้งานได้ก่อนที่จะเริ่มล่ามไพ ธ อน เคล็ดลับใด ๆ
สวัสดี 15

1
@hmi ลองรวมของคุณ.bashrcและ.bash_profileตามที่แนะนำไว้ที่ด้านล่างของหน้านี้: joshstaiger.org/archives/2005/07/bash_profile_vs.htmlนอกจากนี้ยังให้ข้อมูลเกี่ยวกับความแตกต่างระหว่างกัน อาจไม่สามารถแก้ปัญหาได้ แต่อาจช่วยได้
Dangercrow

@hmi ลองใส่/etc/bashrcแทน~/.bashrc.
เสียง

เพียงเพื่อการอ้างอิง - ฉันอาจกลับมาที่คำตอบนี้มากกว่าคำตอบอื่น ๆ ใน StackOverflow ดังนั้นขอบคุณ
timmins



10

ฉันใช้ ptpython https://github.com/jonathanslenders/ptpython/

ptpython เป็นเครื่องมือที่ยอดเยี่ยมในการเติมเชลล์ cmd โดยอัตโนมัติ ติดตั้ง ptpython นั้นง่ายมากใช้เครื่องมือ pip

pip ติดตั้ง ptpython

และสำหรับ django shell คุณควรนำเข้า django env เช่นนี้

นำเข้าระบบปฏิบัติการ

os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "testweb.settings")

เชื่อฉันนี่คือวิธีที่ดีที่สุดสำหรับคุณ !!!


5

แก้ไขสำหรับ windows10 เชลล์:

  • pip ติดตั้ง pyreadline
  • pip ติดตั้ง ipython [เชลล์]


1

ใน Python3 คุณลักษณะนี้ถูกเปิดใช้งานโดยค่าเริ่มต้น ระบบของฉันไม่ได้readlineติดตั้งโมดูล ฉันอยู่บนมันจาโร ฉันไม่ประสบปัญหาการทำให้แท็บนี้สมบูรณ์ในการแจกแจงลินุกซ์อื่น ๆ (ระดับประถมศึกษาอูบุนตูมิ้นต์)

หลังจากpipติดตั้งโมดูลขณะนำเข้ามันเกิดข้อผิดพลาดต่อไปนี้ -

ImportError: libncursesw.so.5: cannot open shared object file: No such file or directory

เพื่อแก้ปัญหานี้ฉันวิ่ง -

cd /usr/lib ln -s libncursesw.so libncursesw.so.5

วิธีนี้แก้ไขข้อผิดพลาดในการนำเข้า และยังทำให้แท็บเสร็จสมบูรณ์ใน python repl โดยไม่มีการสร้าง / เปลี่ยนแปลงใด ๆ.pythonrcและ.bashrc.


0

ใช่. สร้างขึ้นเป็น 3.6

fernanr @ gnuruwi ~ $ python3.6 Python 3.6.3 (ค่าเริ่มต้น 10 เม.ย. 2019, 14:37:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] บน linux พิมพ์ "help", "copyright "," เครดิต "หรือ" ใบอนุญาต "สำหรับข้อมูลเพิ่มเติม

นำเข้าระบบปฏิบัติการระบบปฏิบัติการ แสดงความเป็นไปได้ทั้งหมด 318 รายการ? (y หรือ n) os.CLD_CONTINUED os.O_RDONLY os.ST_NOEXEC os.environ os.getpid (os.readlink (os.spawnvpe (os.CLD_DUMPED os.O_RDWR os.ST_NOSUID os.environb os.getppid (os.readv (os .เซนต์


-1

สำหรับเวอร์ชันเก่ากว่า (2.x) สคริปต์ด้านบนทำงานได้อย่างมีเสน่ห์ :)

fernanr@crsatx4 ~ $ cat .bashrc | grep -i python
#Tab completion for python shell
export PYTHONSTARTUP=~/.pythonrc
fernanr@crsatx4 ~ $ . ~/.bashrc
fernanr@crsatx4 ~ $ echo $?
0
fernanr@crsatx4 ~ $ python2
Python 2.7.5 (default, Jun 11 2019, 14:33:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.
Display all 249 possibilities? (y or n)
os.EX_CANTCREAT             os.O_WRONLY                 

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