Hướng dẫn python repl autocomplete - tự động hoàn thành đại diện python

Tự động hoàn thành cho Shell Python của bạn | Bảng điều khiển | Thông dịch viên

Đây là một cái cũ, nhưng tôi muốn có nó ở đây như một lời nhắc nhở

Một trong những tính năng đẹp của shell django (nghĩa là vỏ python bạn nhận được khi gọi. -Phompletion để xem tất cả các mô -đun trong đó.

Ngày nay, rất nhiều người đang sử dụng ipython vì thiếu tính năng này trên vỏ python mặc định, nhưng điều này chỉ theo mặc định và nếu bạn đang sử dụng ipython chỉ vì hoàn thành tab, hãy quên cài đặt thêm Phải làm thủ thuật nhỏ này:

import rlcompleter, readline
readline.parse_and_bind('tab:complete')

Và bạn có thể sử dụng hoàn thành tab, ví dụ:

>>> import smtplib
>>> smtplib.
smtplib.CRLF                      smtplib.SSLFakeFile               smtplib.__setattr__(
smtplib.LMTP                      smtplib.__all__                   smtplib.__sizeof__(
smtplib.LMTP_PORT                 smtplib.__class__(                smtplib.__str__(
smtplib.OLDSTYLE_AUTH             smtplib.__delattr__(              smtplib.__subclasshook__(
smtplib.SMTP                      smtplib.__dict__                  smtplib._have_ssl
smtplib.SMTPAuthenticationError(  smtplib.__doc__                   smtplib.base64
smtplib.SMTPConnectError(         smtplib.__file__                  smtplib.email
smtplib.SMTPDataError(            smtplib.__format__(               smtplib.encode_base64(
smtplib.SMTPException(            smtplib.__getattribute__(         smtplib.hmac
smtplib.SMTPHeloError(            smtplib.__hash__(                 smtplib.quoteaddr(
smtplib.SMTPRecipientsRefused(    smtplib.__init__(                 smtplib.quotedata(
smtplib.SMTPResponseException(    smtplib.__name__                  smtplib.re
smtplib.SMTPSenderRefused(        smtplib.__new__(                  smtplib.socket
smtplib.SMTPServerDisconnected(   smtplib.__package__               smtplib.ssl
smtplib.SMTP_PORT                 smtplib.__reduce__(               smtplib.stderr
smtplib.SMTP_SSL                  smtplib.__reduce_ex__(
smtplib.SMTP_SSL_PORT             smtplib.__repr__(

Trong ví dụ này, sau khi nhập smtplib, tôi vừa viết smtplib. Trong shell và hit tab hai lần, để có được tất cả các tùy chọn có sẵn trong mô -đun đó.

Đẹp, phải không?

OK, bây giờ sẽ còn đẹp hơn nếu chúng ta không phải thiết lập hoàn thành tab mỗi khi chúng ta chạy vỏ Python, nhưng đây là một loại dễ dàng.

Mỗi lần bạn chạy Python Shell | Bảng điều khiển | Trình thông dịch, nó sẽ tìm kiếm một biến trong môi trường của bạn có tên là PythonStartup, nơi bạn có thể đặt một tệp sẽ được thực thi sau khi bắt đầu shell (nơi hoàn hảo để đặt một số dòng init).

Vì vậy, tất cả những gì bạn phải làm là, trước tiên, hãy thêm hai dòng này vào một tệp, ví dụ, được gọi là .PythonRc trong nhà của bạn:first, add this two lines to a file, for example, called .pythonrc in your home:

$ cat ~/.pythonrc
import rlcompleter, readline
readline.parse_and_bind('tab:complete')
$

Thứ hai, thêm biến pythonstartup vào tệp hồ sơ shell của bạn. Nếu bạn đang sử dụng CSH, TCSH hoặc các vỏ tương tự, điều này sẽ làm điều đó:, add the PYTHONSTARTUP variable to your shell profile file. If you are using csh, tcsh or similar shells, this will do it:

echo "setenv PYTHONSTARTUP ~/.pythonrc" >> ~/.cshrc

Nếu vỏ của bạn là SH, bash, ksh hoặc sments, điều này sẽ làm điều đó:sh, bash, ksh or similars, this will do it:

echo "export PYTHONSTARTUP=~/.pythonrc" >> ~/.profile

(Kiểm tra thông tin hệ điều hành của bạn, có lẽ thay vì .profile nó có thể là .kshrc, .bashrc hoặc một cái gì đó tương tự).

Sau đó, bạn sẽ có thể sử dụng hoàn thành tab mỗi lần trong vỏ Python mặc định của bạn, không có sự phụ thuộc bổ sung!with no additional dependencies!

Lưu ý: Tất nhiên, dù sao bạn cũng nên xem Ipython, vì nó có nhiều tính năng hơn nhiều so với hoàn thành tab, nó là một công cụ mạnh mẽ mà bạn có thể thấy rất hữu ích. Of course, you should take a look at iPython anyway, as it has a lot more features than tab-completion, it is a powerful tool you may find very very useful.

Ipython cho phép tương tác không chặn với Tkinter, GTK, QT và WX. Vỏ python tiêu chuẩn chỉ cho phép tương tác với tkinter. Ipython có thể tương tác quản lý các cụm điện toán song song bằng cách sử dụng các cuộc gọi lại trạng thái không đồng bộ và/hoặc MPI. Ipython có thể được sử dụng làm thay thế vỏ hệ thống, đặc biệt là trên Windows, có vỏ có khả năng tối thiểu. Hành vi mặc định của nó phần lớn quen thuộc từ các shell Unix, nhưng nó cho phép tùy chỉnh và tính linh hoạt của việc thực hiện trong môi trường Python trực tiếp

Này "nồi hơi đôi", thnx cho bình luận. Tôi biết ipython có rất nhiều tính năng (bạn chỉ phải kiểm tra http://ipython.scipy.org để có thêm thông tin về nó. Dù sao, có những lúc mọi người không cần tất cả các tính năng đó, nhưng chỉ cần một số thứ Giống như hoàn thành hoặc tiết kiệm lịch sử vào Shell Python mặc định, đó là đối tượng hoàn hảo cho bài đăng của tôi. Tuần này, trong khi tham dự hội nghị Europython 2010, tôi đã tìm thấy Bpython, một sự thay thế thực sự thú vị khác cho trình thông dịch Python/Shell/giao diện điều khiển mặc định. nên xem xét nó.

Anyway, there are times when people don't need all those features, but just need some things like completion or history saving to the default python shell, those are the perfect audience for my post.

This last week, while attending the Europython 2010 conference, I found bpython, another really interesting alternative to the default python interpreter/shell/console. You should take a look at it.

Xin chào Wu, điều này không hiệu quả với tôi.Tôi đã chạy cả hai dòng trên bảng điều khiển và vẫn không thể tự động hoàn thành hoạt động.Tôi đang làm điều này trên thiết bị đầu cuối Mac/Iterm2.

This is not working for me.

I ran both the lines on the console and still can't get autocomplete to work.

I'm doing this on mac/iterm2 terminal.

Cảm ơn, chỉ là những gì tôi đang tìm kiếm, rất rõ ràng và đơn giản.Người đàn ông tốt.

Tương tự ở đây.Sử dụng mac/iterm2 và tinh chỉnh không làm những gì nó nên ...
Using Mac/iterm2 and the tweak doesn't do what it should...

Này Nadav!Phiên bản nào của OSX và phiên bản Python nào?Tôi đã không thử trong các phiên bản gần đây của OSX, nhưng vẫn hoạt động với tôi trong 10.8.x với các phiên bản Python gần đây (2.7.11 và 3.5.1).Ngoài ra, đó có phải là Python được cài đặt sẵn với OSX, hoặc bạn đã cài đặt nó thông qua MacPorts hoặc bất kỳ hệ thống gói nào khác?

Which version of OSx and which version of python?

I had not tried in recent versions of OSx, but still works for me in 10.8.x with recent python versions (2.7.11 and 3.5.1).

Also, is it the python that comes preinstalled with OSx, or did you install it through macports or any other package system?

Vấn đề với điều này là bạn không thể sử dụng các tab để thụt vào nữa và mã đúc sao chép với các tab sẽ không hoạt động

Không có trackback.