Làm cách nào để tự động điền vào sổ ghi chép jupyter mà không cần sử dụng tab?


103

Tôi muốn có tính năng tự động hoàn thành trong sổ ghi chép, tức là khi tôi nhập nội dung nào đó, một menu thả xuống sẽ xuất hiện, với tất cả những thứ tôi có thể nhập mà không cần phải nhấn nút tab. Có một điều như vậy?

Tôi đã thử:

% config IPCompleter.greedy = True

nhưng điều này yêu cầu nút tab được nhấn

Câu trả lời:


93

Có một phần mở rộng được gọi là Hinterland cho jupyter, tự động hiển thị menu thả xuống khi nhập. Ngoài ra còn có một số tiện ích mở rộng hữu ích khác.

Để cài đặt các tiện ích mở rộng, bạn có thể làm theo hướng dẫn trên repo github này . Để dễ dàng kích hoạt tiện ích mở rộng, bạn có thể muốn sử dụng trình cấu hình tiện ích mở rộng .


3
Nếu tôi đang sử dụng một máy tính từ xa chạy jupyter notebook và tôi sử dụng nó từ máy cục bộ của mình thông qua trình duyệt, tôi nên cài đặt các tiện ích mở rộng ở đâu?
thebeancounter

2
@thebeancounter Tôi chỉ cài đặt tiện ích mở rộng cục bộ trên máy mà tôi truy cập sổ ghi chép qua trình duyệt. Tôi chưa cài đặt bất kỳ tiện ích mở rộng nào trên máy điều khiển từ xa chạy sổ ghi chép jupyter của mình.
vật lýGuy

5
Tôi đã cài đặt hinterland và nó sẽ chỉ tự động hoàn thành nội dung cơ bản của python nhưng sẽ không tự động hoàn thành các chức năng mô-đun (ví dụ: pd, np, v.v.) làm cách nào để tôi có thể tự động hoàn thành những thứ đó cũng như pycharm?
thebeancounter

@thebeancounter Đối với tôi, hinterland hoạt động với các mô-đun như numpy và gấu trúc. Ngay cả khi tôi thực hiện nhập import numpy as npvà nhập tương đối np, các đề xuất vẫn hiển thị (ví dụ: np.abs). Để khắc phục sự cố này, cần có thêm chi tiết về thiết lập của bạn. Tôi đề nghị mở một câu hỏi riêng cho vấn đề của bạn.
vật lýGuy

2
Đối với những người không quen thuộc với Jupyter Notebook như tôi, 1) làm theo hướng dẫn chính thức để cài đặt những thứ này: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) cài đặt giao diện người dùng của trình cấu hình trình duyệt, sau: github.com / Jupyter-Contrib / jupyter_nbextensions_configurator 3) Mở sổ ghi chép jupyter bằng lệnh trong thiết bị đầu cuối:jupyter notebook
Jason

33

Tính năng tự động hoàn thành với Jupyter Notebook quá yếu, ngay cả với phần mở rộng nội địa. Cảm ơn vì ý tưởng tự động hoàn thành mã dựa trên học sâu. Tôi đã phát triển một Tiện ích mở rộng Máy tính xách tay Jupyter dựa trên TabNine cung cấp tính năng tự động hoàn thành mã dựa trên Học sâu. Đây là liên kết Github của công việc của tôi: jupyter-tabnine .

Nó hiện có trên chỉ mục pypi . Đơn giản chỉ cần đưa ra các lệnh sau, sau đó tận hưởng nó :)

pip3 install jupyter-tabnine
jupyter nbextension install --py jupyter_tabnine
jupyter nbextension enable --py jupyter_tabnine
jupyter serverextension enable --py jupyter_tabnine

bản giới thiệu


Hoạt động tuyệt vời! Nhưng nó đã giết dòng mới của tôi (Shift + Enter) không hoạt động nữa trong Máy tính xách tay Jupyter. Bất kỳ giải pháp nào cho điều đó?
Harvey

@Harvey Xin chào, tôi chặn đầu tiên Enterđể tránh hoạt động sai. Nếu cửa sổ gợi ý được hiển thị, đầu tiên Entersẽ kích hoạt đóng cửa sổ. Hiện tại, nếu bạn muốn dòng mới khi gợi ý được hiển thị, bạn chỉ cần đưa ra Entervà sau đó đưa ra Enter(hoặc Shift+ Enternếu bạn muốn thực thi ô hiện tại và tạo một ô mới.) Tôi không chắc đó có phải là một thiết kế tốt hay không. Hãy cho tôi biết kết quả và đề xuất của bạn.
Wenmin Wu

Trên bàn phím máy tính xách tay của tôi, ´fn´ + ´Enter´ hoạt động. Tôi đang quen với hơn. Hành vi mong đợi là Alt + Enter cho dòng mới trong ô và Shift + Enter để thực thi. Dù sao xét về mức độ hữu ích của plugin này thì đây chỉ là điều nhỏ nhặt. Cảm ơn bạn!
Harvey

Trong trường hợp có thể gặp Permission deniedlỗi khi cố gắng cài đặt jupyter, chỉ cần thêm --userbằng lệnh jupyter install.
Yuen Tau

1
Cũng là một cảnh báo: TabNine có thể chiếm một lượng lớn bộ nhớ và tài nguyên CPU. Trong trường hợp của tôi, tôi chạy sổ ghi chép jupyter từ WSL (Ubuntu 18.04) và TabNine chiếm ~ 1,5 GB bộ nhớ. Bộ nhớ được sử dụng có thể giảm xuống còn ~ 200MB nếu bạn kết thúc tác vụ từ trình quản lý tác vụ và TabNine sẽ tự động khởi động vào lần tiếp theo bạn nhập sổ ghi chép jupyter của mình. Thêm chi tiết tại github.com/zxqfl/TabNine/issues/43 .
Yuen Tau

12

Như đã đề cập bởi @physicsGuy ở trên, Bạn có thể sử dụng tiện ích mở rộng nội địa. Các bước đơn giản để làm điều đó.

Cài đặt nbextension bằng kênh conda forge. Chỉ cần chạy lệnh dưới đây trong thiết bị đầu cuối conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Bước tiếp theo bật tiện ích mở rộng nội địa. Chạy lệnh dưới đây trong thiết bị đầu cuối conda:

jupyter nbextension enable hinterland/hinterland

Vậy là xong.


5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandĐây là lỗi khi thực hiện việc này
Darshu Bc

chạy hai lệnh này jupyter contrib nbextension install --systemjupyter contrib nbextension install --userrồi này để xem danh sáchjupyter nbextension list
PiotrK

8

Nếu không thực hiện việc này %config IPCompleter.greedy=Truesau khi bạn nhập một gói như numpy hoặc pandas theo cách này; import numpy as np import pandas as pd.

Sau đó, bạn gõ vào pd.rồi chạm vào nút tab, nó sẽ đưa ra tất cả các phương pháp có thể để sử dụng rất dễ dàng và nhanh chóng.


7

Tôi đang sử dụng Jupiter Notebook 5.6.0. Ở đây, để nhận tự động đề xuất, tôi chỉ cần nhấn phím Tab sau khi nhập ít nhất một ký tự.

 **Example:** Enter character `p` and hit Tab.

Để nhận các phương thức và thuộc tính bên trong thư viện đã nhập, hãy sử dụng cùng một phím Tab với Alice

  import numpy as np

  np. --> Hit Tab key

1

Thêm phần bên dưới vào tùy chọn người dùng bàn phím của bạn trên jupyter lab (Cài đặt-> Trình chỉnh sửa hệ thống nâng cao)

{
    "shortcuts":[
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-file",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-FileEditor .jp-mod-completer-enabled"
        },
        {
            "command": "completer:invoke-notebook",
            "keys": [
                "Ctrl Space"
            ],
            "selector": ".jp-Notebook.jp-mod-editMode .jp-mod-completer-enabled"
        }

    ]
}

1

Tôi sẽ đề nghị mở rộng nội địa .

Trong các câu trả lời khác, tôi không thể tìm thấy phương pháp để cài đặt nó từ pip, vì vậy đây là cách bạn cài đặt nó.

Đầu tiên, cài đặt jupyter Contrib nbextensions bằng cách chạy

pip install jupyter_contrib_nbextensions

Tiếp theo cài đặt tệp js và css cho jupyter bằng cách chạy

jupyter contrib nbextension install --user

và cuối cùng,

jupyter nbextension enable hinterland/hinterland

Đầu ra của lệnh cuối cùng sẽ là

Enabling notebook extension hinterland/hinterland...
      - Validating: OK
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.