Python, tidak dapat membuat grafik pohon menggunakan graphviz dengan paket anytree

Jadi saya telah menginstal paket anytree (setelah usaha keras; saya harus menambahkan beberapa variabel lingkungan pada sistem saya). Setelah melakukan ini saya dapat menggunakan hampir semua fungsi paket anytree - hanya saja bukan yang saya inginkan. Saya ingin menggunakan graphviz bersama dengan paket anytree untuk membuat grafik pohon menggunakan perintah 'DotExporter'.

Saya telah menginstal graphviz; jalurnya adalah C:\Users\joel\Anaconda3_2\Lib\site-packages\graphviz, dan saya juga telah menambahkan baris kode 'from anytree.exporter import DotExporter' ke dokumen Python saya (selain impor anytree lainnya yang diperlukan untuk membuat pohon).

Oleh karena itu, setelah mendefinisikan simpul akar 'root' pohon saya, saya sekarang dapat menghasilkan file png dan titik dari pohon menggunakan salah satu perintah 'DotExporter(root).to_picture('root.png')', namun Saya mendapatkan pesan kesalahan berikut:

'FileNotFoundError: [WinError 2] Sistem tidak dapat menemukan file yang ditentukan'.

Adakah yang tahu apa yang sedang terjadi? Saya menggunakan Python 3.6.2 dengan mesin Spyder sebagai bagian dari distribusi Anaconda (Saya punya Anaconda 3.2). Saya 99% yakin saya memiliki versi terbaru dari anytree dan graphviz.

PEMBARUAN: Jadi saya mengetahui bahwa ada masalah kompatibilitas besar antara Anaconda dan graphviz selama sekitar satu tahun dan berasumsi bahwa inilah masalahnya. Setelah mencoba semua solusi yang disarankan orang, saya masih tidak dapat menjalankan program saya, jadi saya akhirnya mencopot pemasangan Anaconda dan mulai menggunakan PyCharm bersama dengan juru bahasa Python standar. Namun programnya masih tidak berfungsi, jadi meskipun ada masalah kompatibilitas antara Anaconda dan graphviz, ternyata bukan itu masalahnya. Saya mencoba program tersebut di mesin teman serumah saya yang juga menggunakan Anaconda dan mendapatkan kesalahan yang sama seperti yang saya dapatkan.

Pada akhirnya saya menemukan solusi berikut: Saya tidak bisa membuat perintah 'DotExporter(root).to_picture('root.png')' berfungsi, tetapi perintah 'DotExporter(root).to_dotfile('root.dot') ' perintah itu berhasil. File '.dot' berisi kode dan dapat dibuka di Notepad (perangkat lunak pengolah kata lain juga bisa digunakan). Oleh karena itu saya hanya perlu menemukan cara untuk membuat grafik pohon menggunakan file titik daripada menggunakan perintah 'DotExporter(root).to_picture('root.png')'. Cara termudah untuk melakukannya adalah melalui salah satu alat online http://www.webgraphviz.com/ dan http://sandbox.kidstrythisathome.com/erdos/. Buka saja file dot Anda di Notepad, salin isinya dan tempelkan ke situs web dan tekan hasilkan.


person Joel Brennan    schedule 20.07.2018    source sumber
comment
Mengapa Anda 99% yakin? harusnya 100% :)   -  person Yuca    schedule 20.07.2018
comment
Oke, saya baru saja memeriksanya dan sekarang 100% yakin.   -  person Joel Brennan    schedule 20.07.2018
comment
Anda mungkin juga perlu menginstal paket python-graphviz. Tampaknya ini sedikit berantakan: github.com/ContinuumIO/anaconda-issues/ terbitan/1666   -  person darthbith    schedule 21.07.2018
comment
@darthbith Sayangnya itu tidak berhasil. Saya membaca seluruh utas yang Anda tautkan untuk mencoba semua solusi yang diusulkan (yang hanya ada sekitar 2 atau 3, dan postingan lainnya berisi keluhan orang) dan tidak menemukan apa pun yang berhasil. Mengingat lamanya masalah ketidakcocokan Anaconda dan graphviz ini, saya telah memutuskan bahwa saya hanya akan menghapus instalasi Anaconda dan menggunakan distribusi yang berbeda...   -  person Joel Brennan    schedule 21.07.2018
comment
...Saya tidak punya preferensi pribadi untuk Anaconda; itu hanya distribusi yang universitas saya instal, dan saya berencana beralih ke mesin Python yang mendukung eksekusi kode baris demi baris untuk debugging. Saya menyarankan siapa pun yang tidak terlalu paham teknologi dan memiliki masalah yang sama dengan Anaconda dan graphviz melakukan hal yang sama.   -  person Joel Brennan    schedule 21.07.2018


Jawaban (1)


Inilah solusi saya. Saya sedang mengerjakan contoh "memulai" dengan langkah awal berikut:

Buat objek pohon sebagai udo dan kemudian coba DotExporter(udo).to_picture("udo.png"). Di sinilah saya mendapat kesalahan yang sama seperti OP.

Dengan asumsi Anda telah menginstal graphviz dan python-graphviz (misalnya conda install -c anaconda graphviz python-graphviz), Anda dapat menampilkan grafik (pertama-tama menyimpan dotfile) dengan ini:

DotExporter(udo).to_dotfile('udo.dot')

from graphviz import Source
Source.from_file('udo.dot')

Kemudian simpan file gambar dengan ini:

from graphviz import render
render('dot', 'png', 'udo.dot') 
person Erik    schedule 06.02.2019