Ipython: Mengimpor pyplot menyebabkan ikon dok memantul di mac

Dibuat pada 8 Jan 2017  ·  10Komentar  ·  Sumber: ipython/ipython

Ini diilustrasikan oleh gif berikut:

image

Mengimpor pyplot di replika python normal menyebabkan ikon roket python muncul tetapi tidak memantul secara mengganggu. Mengimpornya ke dalam IPython menyebabkan ikon memantul secara mengganggu selama hampir satu menit.

Ini menggunakan kerangka build Python dari Homebrew.

bug

Komentar yang paling membantu

Saya hanya butuh 10 detik untuk menyadari bahwa mesin saya tidak membeku tetapi penunjuk yang saya lihat adalah penunjuk di .gif Anda.

Semua 10 komentar

backend mana yang Anda gunakan? Apakah menjalankan plt.ion() atau %matplotlib membantu?

Saya tidak tahu apa-apa / membuat ini saat saya menebaknya adalah: Ketika IPython memisahkan dari readline, itu juga dipisahkan dari mesin PyOS_InputHook . Dalam kasus python biasa, GUI dimulai (memulai pantulan), kode GUI menginstal hook, dan ketika selesai memulai beberapa cara telepon rumah untuk membiarkan roket tahu untuk berhenti memantul karena loop utama gui berjalan saling terkait dengan repl. Di IPython, hook itu masih terpasang, tetapi tidak masalah karena IPython berjalan melalui toolkit prompt. Jika Anda memulai integrasi loop acara IPython, GUI akan menelepon ke rumah dan menghentikan pemantulan.

Atau saya bisa sangat melenceng.

Ini menggunakan backend MacOSX . Menggunakan plt.ion() atau %matplotlib setelah impor pyplot tidak menghentikan pemantulan dan menggunakan %matplotlib sebelum melakukan impor pyplot hanya menyebabkan ikon mulai memantul.

Apakah itu terjadi dengan backend tk?

Tidak, sama sekali tidak ada ikon roket dengan TkAgg .

Saya akan tetap yang terkait dengan # 9312
Saya akan mencoba untuk memahaminya. Ping @minr.

Saya akan mengatakan bahwa ini :

    if not window_count:
        return

Perlu dihapus karena integrasi eventloop perlu dijalankan meskipun tidak ada jendela ... tampaknya berfungsi untuk saya.
Alternatifnya adalah memastikan inputhook(context) melakukan setidaknya satu loop bahkan jika tidak ada jendela .. jadi berikut:

    global at_least_once
    if not window_count and not at_least_once:
        at_least_once = True
        return

@ngoldbaum maukah kamu mencoba?
Juga saya kira itu berhenti memantul segera setelah Anda memiliki jendela pertama Anda?

Rekaman layar juga membuat saya senang karena pengetikannya realistis, dan membuat saya merasa tidak terlalu bersalah tentang pengetikan yang menghebohkan.

Memang, menghapus itu

if not window_count:
    return

blokir memperbaiki masalah saya. Dan seperti yang Anda duga, membuat plot menghentikan pantulan tersebut.

Dikirim # 10150, akan menunggu tinjauan dari lebih banyak orang yang memenuhi syarat.

Saya hanya butuh 10 detik untuk menyadari bahwa mesin saya tidak membeku tetapi penunjuk yang saya lihat adalah penunjuk di .gif Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat