Tự động hoàn thành tab `ipython` không hoạt động trên mô-đun đã nhập


82

Tính năng hoàn thành tab trên IPython dường như không hoạt động. Ví dụ,

import numpy
numpy.<tab>

chỉ cần thêm một tab.

import numpy
num<tab>

cũng chỉ thêm một tab. Bạn có thể vui lòng đề xuất một số nguyên nhân có thể cho vấn đề này? Tôi đang chạy Windows 7 và Python 2.6.5.


1
Giải pháp dưới đây đã hiệu quả với tôi - nó có hiệu quả với bạn không? Nếu vậy bạn nên đánh dấu câu trả lời được chấp nhận.
bacar

Không có gì dưới đây làm việc cho tôi. Có pyreadline mới nhất. Chạy sổ ghi chép jupyter trên python 3.5.
Michael Szczepaniak

Trong trường hợp nó đang hoạt động và sau đó nó ngừng hoạt động sau khi bạn nhấn một số phím ngẫu nhiên, thì hãy kiểm tra xem loại ô có vô tình bị thay đổi từ "Mã" sang thứ gì khác không, như "Markdown" hoặc "Raw NBConvert".
Sorin Postelnicu

nếu bạn chỉ cần cài đặt một module python mới và ipython không làm autocomplete nhập khẩu, đi đây
Trevor Boyd Smith

jedinâng cấp từ 0,17 lên 0,18 bị lỗi và vô hiệu hóa hoàn thành tab IPython. Xem câu trả lời từ tháng 12 năm 2020 bên dưới.
Abel Cheung

Câu trả lời:


93

Hãy chắc chắn rằng bạn đã cài đặt thư viện pyreadline . Nó cần thiết để hoàn thành tab và các chức năng IPython khác - trong Windows, nó không đi kèm với gói IPython và bạn phải cài đặt riêng -

> pip install pyreadline

1
@joaquin Tôi đã cố gắng cài đặt cái này cho mac bằng cách sử dụng install gnureadline, nhưng tôi vẫn không thể hoàn thành tab khi tôi làm điều gì đó như numpy.<tab>. Bạn có biết tại sao không?
TheRealFakeNews

@AlanH Xin lỗi, không biết gì về MAC. Có lẽ bạn nên mở một câu hỏi mới, cụ thể.
joaquin

1
FYI, nếu nó không hoạt động ngay lập tức (đó là trường hợp của tôi), hãy khởi động bảng điều khiển mới.
Alby

2
Thêm đề xuất sử dụng Anaconda hoặc Miniconda để quản lý cài đặt. Tôi vừa cài đặt ipython ( conda install ipython) và không gặp sự cố hoàn thành tab nào. Bạn có thể sử dụng nó đồng thời với pip.
Kenny

1
Tôi nghĩ rằng câu trả lời này là hết hạn, như ipython không dựa vào pyreadlines kể từ phiên bản 5.0, và pyreadlines chưa được phát triển từ năm 2017 - Xem ipython.org/pyreadline.html
Olsgaard

7

Tệp ipythonrc của bạn có thể đã lỗi thời. Thử chạy

ipython -upgrade

10
các -upgradelá cờ không được hỗ trợ nữa.
jsmedmar

6

pip cho tôi biết tôi đã cài đặt phiên bản pyreadline 1.7.1

C:\Users\me>pip freeze | grep readline
pyreadline==1.7.1

Nâng cấp đã pyreadlinesửa nó cho tôi:

C:\Users\me>pip install --upgrade pyreadline

C:\Users\me>pip freeze | grep readline
pyreadline==2.0

5

Trong trường hợp bất cứ ai đang sử dụng gần đây 7.19.0và autocomplete không làm việc, hãy thử hạ jeditới 0.17.2:

pip install jedi==0.17.2

Xem https://github.com/ipython/ipython/issues/12740 để biết chi tiết.


Điều này phản ánh hiện trạng kể từ tháng 1 năm 2021. parsoGói cũng cần được hạ cấp xuống 0,7.1.
Abel Cheung

3

Câu nói cổ điển 'bạn đã thử tắt và bật lại chưa' phù hợp với tôi.

pip uninstall ipython
pip install ipython

3

Hạ cấp iPython đã thực hiện một mẹo nhỏ.

pip install --upgrade ipython==5.8.0

3

Tôi đã có vấn đề này. Tôi đã giải quyết bằng cách hạ cấp gói python-parso

hạ cấp gói python-parso (0.8.0-1 => 0.6.2-1)


1
đối với tôi, giáng cấp từ 0.8.0 đến 0.7.1 đã làm các trick
CIsForCookies

1

Hiện tại, trên OSX, pipython được cài đặt pip không cho phép hoàn thành tab, pyreadline release.py bị phá vỡ .. WFM gì:

easy_install ipython readline

YMMV.


1

Ai đó khác trong StackOverflow đã đăng liên kết này: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

Về cơ bản, nó easy_install readlinekhông phải là khám phá nơi mà readline egg được cài đặt và chỉnh sửa tập lệnh ipython bin để sử dụng readline này:

  1. Cài đặt dòng đọc "chính thức": easy_install readline
  2. Khám phá xem nó ở đâu. Nhìn vào /Library/Python/site-packages/readline-*.egghoặc trong đối tác Virtualenv của bạn
  3. Khám phá nơi chứa ipython bin: which ipython
  4. Thêm MỘT LINE vào tệp này, thêm đường dẫn readline egg ngay sau import sysdòng.

Tập lệnh bin ipython được ảo hóa của tôi đã hoạt động như sau:

#!/Users/alanjds/src/git/cervejeiras/venv/cervejeiras-lfs/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.13.1','console_scripts','ipython'
__requires__ = 'ipython==0.13.1'
import sys

### ONLY LINE ADDED:
sys.path.insert(0, '/Users/alanjds/src/git/cervejeiras/venv/cervejeiras-lfs/lib/python2.6/site-packages/readline-6.2.4.1-py2.6-macosx-10.6-fat.egg')
####

from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
    )

1

Tôi nhận ra đây là một câu hỏi thực sự cũ, nhưng không có câu trả lời nào ở trên phù hợp với tôi (Và đây là lần đầu tiên bạn nhận được khi bạn google một câu hỏi có tính chất này).

Tôi nên đề cập rằng điều này KHÔNG dành riêng cho windows, tôi đã gặp sự cố khi chạy CentOS 6.5 và Python 2.7

Đây là những gì tôi đã làm:

apt-get/yum install ncurses-devel
#If you want history in iPython:
apt-get/yum install sqlite-devel
easy_install ipython readline
ipython

In [1]: from 
Display all 391 possibilities? (y or n)

Nếu bạn không có các gói -devel, quá trình cài đặt của bạn sẽ không thành công khi liên kết chúng và xây dựng các quả trứng. Hy vọng điều này sẽ giúp ích cho những người khác!


0

Pyreadline là cần thiết của ipython. Cài đặt pyreadline. Điều này đã được thực hiện trong Windows 7. Lấy pyreadline zip, pyreadline-master.zip , giải nén. Trong powershell thay đổi thư mục thành pyreadline được giải nén, hãy đảm bảo python được đặt trong Path và nhập lệnh python setup.py installĐiều này sẽ nhập pyreadline trong C: \ Python27 \ Lib \ site-pack


0

Tôi đã gặp sự cố này và biết rằng tôi đã cài đặt pip cho mô-đun mà tôi đang tìm kiếm. Thực hiện đã $ ipython --initgiải quyết vấn đề cho tôi.



0

Nếu bạn sử dụng sổ ghi chép Jupyter và bạn vẫn thấy tính năng tự động hoàn thành Tab hoạt động sau khi bạn đã thử tất cả các bước được đề xuất trong bài đăng ở đây, bạn có thể muốn kiểm tra xem mình có đang cố gắng sử dụng tính năng tự động hoàn thành Tab trong định nghĩa hàm hay không. Nếu các câu lệnh nhập của bạn là một phần của hàm chẳng hạn như bên dưới, bạn sẽ không nhận được tự động hoàn thành Tab. Bạn cần đặt các câu lệnh nhập bên ngoài hàm và cũng thực thi chúng một lần trước khi yêu cầu tự động hoàn thành các gói.

def myfunction():
    import pandas as pd
    import numpy as np

    a = pd.DataFrame(np.random.normal(1,3, (4,4))
    return a

0

Tôi phải đối mặt với vấn đề tương tự với thư viện numpy. Vấn đề là với phiên bản cụ thể của máy tính xách tay ipython hoặc jupyter và nó được giải quyết bằng cách cập nhật ipython hoặc jupyter. Nếu bạn đang sử dụng môi trường chung cư như anaconda hoặc miniconda thì hãy cập nhật ipython trong môi trường đó bằng cách sử dụng

conda update ipython

Trong trường hợp anaconda, bạn cũng cần cập nhật qtconsole

conda update qtconsole

Đôi khi anaconda hạn chế việc cập nhật ipython thì hãy thử

conda update -all

Nếu bạn không sử dụng môi trường thì hãy cập nhật trực tiếp bằng pip

pip update ipython
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.