Bagaimana cara mendapatkan pelengkapan otomatis di notebook jupyter tanpa menggunakan tab?

103

Saya ingin mendapatkan fitur pelengkapan otomatis di buku catatan, yaitu saat saya mengetik sesuatu, menu tarik-turun muncul, dengan semua kemungkinan hal yang mungkin saya ketik, tanpa harus menekan tombol tab. Apa ada yang seperti itu?

Saya mencoba :

% config IPCompleter.greedy = Benar

tapi ini membutuhkan tombol tab untuk ditekan

physicsnoob1000
sumber

Jawaban:

93

Ada extension bernama Hinterland for jupyter, yang otomatis menampilkan menu drop down saat mengetik. Ada juga beberapa ekstensi berguna lainnya.

Untuk menginstal ekstensi, Anda dapat mengikuti panduan di repo github ini . Untuk mengaktifkan ekstensi dengan mudah, Anda mungkin ingin menggunakan konfigurator ekstensi .

physicsGuy
sumber
3
Jika saya menggunakan mesin jarak jauh yang menjalankan notebook jupyter dan saya menggunakannya dari komputer lokal saya melalui browser, di mana saya harus menginstal ekstensi?
counter counter
2
@thebeancounter Saya memiliki ekstensi yang dipasang hanya secara lokal, yaitu di mesin tempat saya mengakses notebook melalui browser. Saya tidak memiliki ekstensi apa pun yang terpasang di mesin jarak jauh saya yang menjalankan notebook jupyter.
physicsGuy Beli
5
Saya telah menginstal pedalaman dan itu hanya akan otomatis menyelesaikan hal-hal python dasar tetapi tidak akan melengkapi fungsi modul secara otomatis (misalnya pd, np dll) bagaimana saya bisa menyelesaikannya secara otomatis dan juga seperti pycharm?
counter counter
@thebeancounter Bagi saya pedalaman bekerja dengan modul seperti numpy dan panda. Meskipun saya melakukan impor import numpy as npdan jenis relatif np, saran akan muncul (mis. Np.abs). Untuk memecahkan masalah ini, detail lebih lanjut tentang penyiapan Anda diperlukan. Saya menyarankan untuk membuka pertanyaan terpisah untuk masalah Anda.
physicsGuy
2
Bagi yang belum familiar dengan Jupyter Notebook seperti saya, 1) ikuti petunjuk resmi untuk menginstal hal-hal ini: jupyter-contrib-nbextensions.readthedocs.io/en/latest/… 2) instal UI konfigurator browser, berikut: github.com / Jupyter-contrib / jupyter_nbextensions_configurator 3) Buka notebook jupyter menggunakan perintah di terminal:jupyter notebook
Jason
33

Penyelesaian otomatis dengan Notebook Jupyter sangat lemah, bahkan dengan ekstensi pedalaman. Terima kasih atas ide pelengkapan otomatis kode berbasis pembelajaran mendalam. Saya mengembangkan Ekstensi Notebook Jupyter berdasarkan TabNine yang menyediakan pelengkapan otomatis kode berdasarkan Deep Learning. Ini tautan Github dari pekerjaan saya: jupyter-tabnine .

Ini tersedia di indeks pypi sekarang. Cukup keluarkan perintah berikut, lalu nikmatilah :)

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

demo

Wenmin Wu
sumber
Bekerja dengan baik! Tapi itu telah membunuh baris baru saya (Shift + Enter) tidak berfungsi lagi di Notebook Jupyter. Ada solusi untuk itu?
Harvey
@Harvey Hai, saya memblokir yang pertama Enteruntuk menghindari kesalahan operasi. Jika jendela petunjuk ditampilkan, yang pertama Enterakan memicu penutupan jendela. Untuk saat ini, jika Anda menginginkan baris baru ketika petunjuknya ditampilkan, Anda bisa mengeluarkan Enterdan kemudian mengeluarkan Enter(atau Shift+ Enterjika Anda ingin mengeksekusi sel saat ini dan membuat yang baru.) Saya tidak yakin apakah itu desain yang bagus. Beri tahu saya pendapat dan saran Anda.
Wenmin Wu
Di keyboard laptop saya berfungsi ´fn´ + ´Enter´. Saya mulai terbiasa daripada. Perilaku yang diharapkan adalah Alt + Enter untuk baris baru dalam sel dan Shift + Enter untuk eksekusi. Pokoknya mengingat betapa bermanfaatnya plugin ini, ini hanya hal kecil. Terima kasih!
Harvey
Jika ada Permission deniedkesalahan saat mencoba menginstal untuk jupyter, cukup tambahkan --userdengan perintah jupyter install.
Yuen Tau
1
Juga semacam peringatan: TabNine dapat menghabiskan banyak memori dan sumber daya CPU. Dalam kasus saya, saya menjalankan notebook jupyter dari WSL (Ubuntu 18.04), dan TabNine membutuhkan ~ memori 1.5GB. Memori yang digunakan dapat turun menjadi ~ 200MB jika Anda mengakhiri tugas dari task manager dan TabNine akan melakukan boot otomatis sendiri saat Anda mengetik di notebook jupyter Anda lagi. Detail selengkapnya di github.com/zxqfl/TabNine/issues/43 .
Yuen Tau
12

Seperti yang disebutkan oleh @physicsGuy di atas, Anda dapat menggunakan ekstensi hinterland. Langkah sederhana untuk melakukannya.

Instalasi nbextension menggunakan conda forge channel. Cukup jalankan perintah di bawah ini di terminal conda:

conda install -c conda-forge jupyter_nbextensions_configurator

Langkah Berikutnya mengaktifkan ekstensi pedalaman. Jalankan perintah di bawah ini di terminal conda:

jupyter nbextension enable hinterland/hinterland

Selesai.

Sanchit Kumar
sumber
5
Enabling notebook extension hinterland/hinterland... - Validating: problems found: - require? X hinterland/hinterlandIni adalah kesalahan dalam melakukan ini
Darshu Bc
jalankan dua perintah ini jupyter contrib nbextension install --systemdan jupyter contrib nbextension install --userkemudian ini untuk melihat daftarnyajupyter nbextension list
PiotrK
8

Tanpa melakukan ini %config IPCompleter.greedy=Truesetelah Anda mengimpor paket seperti numpy atau pandas dengan cara ini; import numpy as np import pandas as pd.

Kemudian Anda mengetik pd.lalu ketuk tombol tab itu akan menampilkan semua metode yang mungkin untuk digunakan dengan sangat mudah dan lurus ke depan.

Mikha Timileyin
sumber
7

Saya menggunakan Jupiter Notebook 5.6.0. Di sini, untuk mendapatkan sugesti otomatis saya hanya menekan tombol Tab setelah memasukkan setidaknya satu karakter.

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

Untuk mendapatkan metode dan properti di dalam pustaka yang diimpor, gunakan tombol Tab yang sama dengan Alice

  import numpy as np

  np. --> Hit Tab key
Hearaman
sumber
1

Tambahkan di bawah ini ke preferensi pengguna keyboard Anda di jupyter lab (Pengaturan-> Editor sistem lanjutan)

{
    "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"
        }

    ]
}
Pravin kumar
sumber
1

Saya akan menyarankan perluasan pedalaman .

Dalam jawaban lain, saya tidak dapat menemukan metode untuk menginstalnya dari pip, jadi beginilah cara Anda menginstalnya.

Pertama, instal jupyter contrib nbextensions dengan menjalankan

pip install jupyter_contrib_nbextensions

Selanjutnya instal file js dan css untuk jupyter dengan menjalankan

jupyter contrib nbextension install --user

dan pada akhirnya lari,

jupyter nbextension enable hinterland/hinterland

Output dari perintah terakhir adalah

Enabling notebook extension hinterland/hinterland...
      - Validating: OK
Khushal sharma
sumber