Làm cách nào để thêm hoàn thành tab vào trình bao Python?


125

Khi bắt đầu sử dụng ứng dụng django python manage.py shell, tôi nhận được một trình bao InteractiveConsole - tôi có thể sử dụng tính năng hoàn thành tab, v.v.

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)

Khi chỉ bắt đầu sử dụng trình thông dịch python python, nó không cung cấp tính năng hoàn thành tab.

Ai đó có thể cho tôi biết django đang làm gì để cung cấp cho tôi bảng điều khiển tương tác hoặc tôi cần làm gì để khởi động bảng điều khiển tương tác mà không có ứng dụng django?


1
Khi bạn nhập vào python, bạn sẽ nhận được lời nhắc >>> phải không? Đó là vỏ tương tác. Câu hỏi của bạn là gì?
S.Lott 29/10/08

4
Nó không cung cấp hoàn thành tab. Đó là vấn đề.
ashchristopher 29/10/08

Vui lòng cập nhật câu hỏi của bạn để xác định điều đó.
Daryl Spitzer

Câu trả lời:


210

Tôi có thể đã tìm ra một cách để làm điều đó.

Tạo tệp .pythonrc

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

thì trong tệp .bashrc của bạn, hãy thêm

export PYTHONSTARTUP=~/.pythonrc

Điều đó có vẻ hiệu quả.


2
điều này hoạt động cho Jython nơi IPython và bpython hiện không khả dụng.
Skylar Saveland

1
Vì một số lý do, phần trên hoạt động với tôi trong máy mac cũ có "sư tử núi" nhưng không hoạt động với máy Mac mới có "el captan". Tôi cần phải source ~/.bashrclàm cho nó hoạt động mọi lúc trước khi bắt đầu trình thông dịch python. Bất kỳ lời khuyên?
chào 15

1
@hmi Hãy thử thống nhất của bạn .bashrc.bash_profiletheo đề xuất ở cuối trang này: joshstaiger.org/archives/2005/07/bash_profile_vs.html Nó cũng cung cấp thông tin về sự khác biệt giữa chúng. Nó có thể không giải quyết được vấn đề, nhưng nó có thể hữu ích.
Dangercrow

@hmi Hãy thử đặt nó vào /etc/bashrc, thay vì ~/.bashrc.
giọng nói

Chỉ để tham khảo - có lẽ tôi đã quay lại câu trả lời này nhiều lần hơn bất kỳ câu trả lời nào khác trên StackOverflow, vì vậy cảm ơn.
timmins



10

Tôi sử dụng ptpython. https://github.com/jonathanslenders/ptpython/

ptpython là một công cụ cmd shell autocomplete tuyệt vời. cài đặt ptpython rất dễ dàng, sử dụng công cụ pip

pip cài đặt ptpython

và đối với django shell, bạn nên nhập django env, như thế này

nhập hệ điều hành

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

Tin tôi đi, đây là cách tốt nhất cho bạn !!!


5

sửa lỗi cho windows10 shell:

  • pip cài đặt pyreadline
  • pip cài đặt ipython [shell]


1

Trong Python3, tính năng này được bật theo mặc định. Hệ thống của tôi chưa readlineđược cài đặt mô-đun . Tôi đang ở Manjaro. Tôi đã không gặp phải vấn đề hoàn thành tab này trên các bản phân phối linux khác (sơ cấp, ubuntu, bạc hà).

Sau khi pipcài đặt mô-đun, trong khi nhập, nó gặp lỗi sau-

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

Để giải quyết vấn đề này, tôi đã chạy ...

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

Điều này đã giải quyết được lỗi nhập. Và, nó cũng mang lại sự hoàn thành tab trong python repl mà không có bất kỳ tạo / thay đổi nào của .pythonrc.bashrc.


0

Đúng. Nó được xây dựng trong 3.6.

fernanr @ gnuruwi ~ $ python3.6 Python 3.6.3 (mặc định, ngày 10 tháng 4 năm 2019, 14:37:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] trên linux Loại "trợ giúp", "bản quyền "," tín dụng "hoặc" giấy phép "để biết thêm thông tin.

nhập os os. Hiển thị tất cả 318 khả năng? (y hoặc n) os.CLD_CONTINUED os.O_RDONLY os.ST_NOEXEC os.enosystem os.getpid (os.readlink (os.spawnvpe (os.CLD_DUMPED os.O_RDWR os.ST_NOSUID os.environb os.getppid) os.readv (os .st


-1

Đối với các phiên bản cũ hơn (2.x), script ở trên hoạt động giống như charm :)

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                 

Câu trả lời của bạn dường như thiếu nội dung của "~ / .pythonrc"
MadMike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.