Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
jbarrigapartarrieu opened this issue ยท 36 comments
Hi everyone!
Trying to run the second block in run.ipynb (start learning process) but I get the following error. I have Python 3.5 installed. Both pydot and graphviz are installed in the proper environment. This is the error I get. Thanks in advance for your help.
FileNotFoundError Traceback (most recent call last)
~/anaconda2/envs/py35/lib/python3.5/site-packages/pydot.py in create(self, prog, format)
1877 shell=False,
-> 1878 stderr=subprocess.PIPE, stdout=subprocess.PIPE)
1879 except OSError as e:
~/anaconda2/envs/py35/lib/python3.5/subprocess.py in init(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds)
675 errread, errwrite,
--> 676 restore_signals, start_new_session)
677 except:
~/anaconda2/envs/py35/lib/python3.5/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session)
1288 err_msg += ': ' + repr(orig_executable)
-> 1289 raise child_exception_type(errno_num, err_msg)
1290 raise child_exception_type(err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'dot'
During handling of the above exception, another exception occurred:
Exception Traceback (most recent call last)
~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/utils/vis_utils.py in _check_pydot()
26 # to check the pydot/graphviz installation.
---> 27 pydot.Dot.create(pydot.Dot())
28 except Exception:
~/anaconda2/envs/py35/lib/python3.5/site-packages/pydot.py in create(self, prog, format)
1882 '"{prog}" not found in path.'.format(
-> 1883 prog=prog))
1884 else:
Exception: "dot" not found in path.
During handling of the above exception, another exception occurred:
ImportError Traceback (most recent call last)
in ()
39 #copy the config file to the run folder
40 copyfile('./config.py', run_folder + 'config.py')
---> 41 plot_model(current_NN.model, to_file=run_folder + 'models/model.png', show_shapes = True)
42
43 print('\n')
~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/utils/vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir)
133 'LR' creates a horizontal plot.
134 """
--> 135 dot = model_to_dot(model, show_shapes, show_layer_names, rankdir)
136 _, extension = os.path.splitext(to_file)
137 if not extension:
~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/utils/vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir)
54 from ..models import Sequential
55
---> 56 _check_pydot()
57 dot = pydot.Dot()
58 dot.set('rankdir', rankdir)
~/anaconda2/envs/py35/lib/python3.5/site-packages/keras/utils/vis_utils.py in _check_pydot()
29 # pydot raises a generic Exception here,
30 # so no specific class can be caught.
---> 31 raise ImportError('Failed to import pydot. You must install pydot'
32 ' and graphviz for pydotprint
to work.')
33
ImportError: Failed to import pydot. You must install pydot and graphviz for pydotprint
to work.
I used https://stackoverflow.com/questions/40632486/dot-exe-not-found-in-path-pydot-on-python-windows-7 to get past a similar issue
@jbarrigapartarrieu make sure you have Graphviz installed separately on your system, not just in your project directory. You can find source and executable package installers here: https://www.graphviz.org/download/
Same issue for me. Thanks to @jdori , I use homebrew to install graphviz and the problem sovled.
brew install graphviz
or equivalent should fix this
@DataInformer thank you
I solved with this 2 steps:
- install Graphviz after download installer (https://www.graphviz.org/)
- insert in code this two lines:
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'
@MirkosMartins The issue still persists for me even after doing the same as you did.
@MirkosMartins The issue still persists for me even after doing the same as you did.
Kiran-kkt, could you send me the error message?
@MirkosMartins The issue still persists for me even after doing the same as you did.
Kiran-kkt, could you send me the error message?
Error message:
FileNotFoundError
Traceback (most recent call last)
C:\Program Files\Anaconda3\lib\site-packages\pydot.py in create(self, prog, format, encoding)
1914 arguments=arguments,
-> 1915 working_dir=tmp_dir,
1916 )C:\Program Files\Anaconda3\lib\site-packages\pydot.py in call_graphviz(program, arguments, working_dir, **kwargs)
135 stdout=subprocess.PIPE,
--> 136 **kwargs
137 )C:\Program Files\Anaconda3\lib\subprocess.py in init(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds)
946 errread, errwrite,
--> 947 restore_signals, start_new_session)
948 except:C:\Program Files\Anaconda3\lib\subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, unused_restore_signals, unused_start_new_session)
1223 cwd,
-> 1224 startupinfo)
1225 finally:FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
During handling of the above exception, another exception occurred:
FileNotFoundError Traceback (most recent call last)
C:\Program Files\Anaconda3\lib\site-packages\keras\utils\vis_utils.py in _check_pydot()
25 # to check the pydot/graphviz installation.
---> 26 pydot.Dot.create(pydot.Dot())
27 except OSError:C:\Program Files\Anaconda3\lib\site-packages\pydot.py in create(self, prog, format, encoding)
1921 prog=prog)
-> 1922 raise OSError(*args)
1923 else:FileNotFoundError: [WinError 2] "dot" not found in path.
During handling of the above exception, another exception occurred:
OSError Traceback (most recent call last)
in ()
7 model.add(Dense(2, input_dim=1, activation='relu'))
8 model.add(Dense(1, activation='sigmoid'))
----> 9 plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)C:\Program Files\Anaconda3\lib\site-packages\keras\utils\vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir)
130 'LR' creates a horizontal plot.
131 """
--> 132 dot = model_to_dot(model, show_shapes, show_layer_names, rankdir)
133 _, extension = os.path.splitext(to_file)
134 if not extension:C:\Program Files\Anaconda3\lib\site-packages\keras\utils\vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir)
53 from ..models import Sequential
54
---> 55 _check_pydot()
56 dot = pydot.Dot()
57 dot.set('rankdir', rankdir)C:\Program Files\Anaconda3\lib\site-packages\keras\utils\vis_utils.py in _check_pydot()
27 except OSError:
28 raise OSError(
---> 29 'pydot
failed to call GraphViz.'
30 'Please install GraphViz (https://www.graphviz.org/) '
31 'and ensure that its executables are in the $PATH.')OSError:
pydot
failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.
Sample code:
from keras.models import Sequential
from keras.layers import Dense
from keras.utils.vis_utils import plot_model
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'
model = Sequential()
model.add(Dense(2, input_dim=1, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)
User path variable:
If you have setup the PATH variable in Windows and still the same error shows up in any IDE like PyCharm, then restart your IDE. It fixes the error as the PATH variable does not get updated dynamically.
@Kiran-kkt You need to install Graphviz with conda, and not from the binaries.
See here for syntax: https://anaconda.org/anaconda/graphviz
It's probably better to uninstall Graphviz first, but actually I'm not sure if there would be any clash.
Reason: Pydot checks whether you have graphviz installed by calling the dot
executable. On Windows it appends an extension "exe" unless you have Anaconda, in which case it appends "bat". You can check that your Graphviz installation from binaries has only "dot.exe". So since pydot tries to execute "dot.bat" you;'re getting the error.
You can see it in Pydot's sources here: https://github.com/pydot/pydot/blob/master/pydot.py#L103-L108
@onomatopeia I've installed Graphviz via conda and now I get a new error like this.
Error message:
AssertionError Traceback (most recent call last)
in
7 model.add(Dense(2, input_dim=1, activation='relu'))
8 model.add(Dense(1, activation='sigmoid'))
----> 9 plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)
C:\ProgramData\Anaconda3\envs\masterprjt_v_1.0\lib\site-packages\keras\utils\vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir)
130 'LR' creates a horizontal plot.
131 """
--> 132 dot = model_to_dot(model, show_shapes, show_layer_names, rankdir)
133 _, extension = os.path.splitext(to_file)
134 if not extension:
C:\ProgramData\Anaconda3\envs\masterprjt_v_1.0\lib\site-packages\keras\utils\vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir)
53 from ..models import Sequential
54
---> 55 _check_pydot()
56 dot = pydot.Dot()
57 dot.set('rankdir', rankdir)
C:\ProgramData\Anaconda3\envs\masterprjt_v_1.0\lib\site-packages\keras\utils\vis_utils.py in _check_pydot()
24 # Attempt to create an image of a blank graph
25 # to check the pydot/graphviz installation.
---> 26 pydot.Dot.create(pydot.Dot())
27 except OSError:
28 raise OSError(
C:\ProgramData\Anaconda3\envs\masterprjt_v_1.0\lib\site-packages\pydot.py in create(self, prog, format, encoding)
1883 out=stdout_data,
1884 err=stderr_data))
-> 1885 assert p.returncode == 0, p.returncode
1886 return stdout_data
AssertionError: 1
Line #24 #25 suggests me that its checking for graphviz installation. I've also looked up in stackoverflow and I see the same answer
I also tried this by installing python package anaconda python-graphviz but of no use.
I don't understand why this problem still exsists it's kind of wierd.
Sorry to hear that @Kiran-kkt, this solution worked on my machine :(.
Anyway, the error you're getting says that the subprocess ended with exit code = 1.
Are you also getting an error message (just before the AssertionError) - something like
message = '"{prog}" with args {arguments} returned code: {code}\n\n'
'stdout, stderr:\n {out}\n{err}\n'
Maybe that gives more details as to what is going on?
This message is formed and displayed in the latest version of pydot, but from the line numbers in your stack trace I can see that you have some older version. Could you check what version that is? (e.g. by running pip freeze
from the command line inside the virtual environment)
@onomatopeia Thanks. Installing with conda worked for me.
@onomatopeia Here is the message
"dot" with args ['-Tps', 'C:\\Users\\TUNUGU~1\\AppData\\Local\\Temp\\tmp4dwfnf5z'] returned code: 1
stdout, stderr:
b''
b''
pydot version is 1.4.1 and graphviz version is 2.38
Ah, that is so unhelpful!
Ok, some last checks before I give up.
In the command line activate your virtual env, type where dot
. This is just a sanity check, the path should be something like <path_to_anaconda>\envs\<your_virtual_env>\Library\bin\dot.bat
.
Then check that this file actually exists: C:\\Users\\TUNUGU~1\\AppData\\Local\\Temp\\tmp4dwfnf5z
(I copied it from your post). Run (still from the command line inside the virtual env) dot -Tps C:\\Users\\TUNUGU~1\\AppData\\Local\\Temp\\tmp4dwfnf5z
That should generate a lot of textual output, and no errors.
If any of the above fails I would advise reinstalling graphviz (with conda).
@onomatopeia Thank you very much for the help. I'll get back to you if I get it right.
It worked with the following command on windows 10:
conda install graphviz
I solved with this 2 steps on Linux
- conda install -c conda-forge graphviz
- restart jupyter notebook
then ,it solved!
@jbarrigapartarrieu make sure you have Graphviz installed separately on your system, not just in your project directory. You can find source and executable package installers here: https://www.graphviz.org/download/
in Ubuntu, I use 'apt-get install graphviz', then , it sovled.
@jbarrigapartarrieu make sure you have Graphviz installed separately on your system, not just in your project directory. You can find source and executable package installers here: https://www.graphviz.org/download/
in Ubuntu, I use 'apt-get install graphviz', then , it sovled.
This worked for me !
I had the same issue and the install of graphviz via Anaconda solved it for me on Windows 8.1.
I used this one:
conda install -c anaconda python-graphviz
I found it at the link below.
https://anaconda.org/anaconda/python-graphviz
brew install graphviz
or equivalent should fix this
be careful, it will remove all python link
@jbarrigapartarrieu make sure you have Graphviz installed separately on your system, not just in your project directory. You can find source and executable package installers here: https://www.graphviz.org/download/
in Ubuntu, I use 'apt-get install graphviz', then , it sovled.
This worked @xjzhou
On Windows 10:
- Run PowerShell as Adnin
dot -c
"dot" with args ['-Tps', 'C:\Users\RUSHI\AppData\Local\Temp\tmpc4sohz9l'] returned code: 1
stdout, stderr:
b''
b"'C:\Users\RUSHI\Anaconda' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n"
AssertionError Traceback (most recent call last)
<ipython-input-2-39ccd97d46fc> in <module>
39 #copy the config file to the run folder
40 copyfile('./config.py', run_folder + 'config.py')
---> 41 plot_model(current_NN.model, to_file=run_folder + 'models/model.png', show_shapes = True)
42
43 print('\n')
~\Anaconda Python\envs\tf-gpu\lib\site-packages\keras\utils\vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir, expand_nested, dpi)
238 """
239 dot = model_to_dot(model, show_shapes, show_layer_names, rankdir,
--> 240 expand_nested, dpi)
241 _, extension = os.path.splitext(to_file)
242 if not extension:
~\Anaconda Python\envs\tf-gpu\lib\site-packages\keras\utils\vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir, expand_nested, dpi, subgraph)
77 from ..models import Sequential
78
---> 79 _check_pydot()
80 if subgraph:
81 dot = pydot.Cluster(style='dashed', graph_name=model.name)
~\Anaconda Python\envs\tf-gpu\lib\site-packages\keras\utils\vis_utils.py in _check_pydot()
26 # Attempt to create an image of a blank graph
27 # to check the pydot/graphviz installation.
---> 28 pydot.Dot.create(pydot.Dot())
29 except OSError:
30 raise OSError(
~\Anaconda Python\envs\tf-gpu\lib\site-packages\pydot.py in create(self, prog, format, encoding)
1943 print(message)
1944
-> 1945 assert process.returncode == 0, process.returncode
1946
1947 return stdout_data
AssertionError: 1
I get this error. Someone please help. I've already tried doing:
- pip install graphviz
- conda install graphviz
- Downloading graphviz on my system and manually adding its path to environment variable in my script
- Adding downloaded graphviz's bin folder to the environment variable
Nothing worked for me. If someone can please help out would be really helpful. Thanks!
On Windows 10:
- Run PowerShell as Adnin
dot -c
This reply helped!
Use PowerShell!
On Windows 10:
* Run PowerShell as Adnin * `dot -c`
So much time lost but so easy to fix. Thank you so much!
For Mac, that's how it works for my case:
pydot:
pip3 install pydot
graphviz:
(note it doesn't work if just pip3 install graphviz
, even it's listed under pip3 list
)
This works:
brew install graphviz
, as indicated by them (https://www.graphviz.org/download/) (note you might need to install brew first on you Mac, so copy and paste this line in terminal and run to install brew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
)
On Windows 10:
- Run PowerShell as Adnin
dot -c
This reply helped!
Use PowerShell!
yes,this is very useful
@jbarrigapartarrieu make sure you have Graphviz installed separately on your system, not just in your project directory. You can find source and executable package installers here: https://www.graphviz.org/download/
in Ubuntu, I use 'apt-get install graphviz', then , it sovled.
This worked @xjzhou
Thank you for your share
I solved with this 2 steps on Linux
- conda install -c conda-forge graphviz
- restart jupyter notebook
then ,it solved!
I can confirm this worked on Windows too. Thanks
- Install Graphviz from https://www.graphviz.org/download/
- Import:
from tensorflow.python.keras.utils.vis_utils import model_to_dot
from tensorflow.python.keras.utils.vis_utils import plot_model
I did this:
"Install Graphviz from https://www.graphviz.org/download/
Import:
from tensorflow.python.keras.utils.vis_utils import model_to_dot
from tensorflow.python.keras.utils.vis_utils import plot_model"
and I have this:
UnimplementedError: The Conv2D op currently only supports the NHWC tensor format on the CPU. The op was given the format: NCHW
[[node model_9/conv2d_117/Conv2D (defined at C:\Users\Admin\Desktop\finantial risk\DeepReinforcementLearning-master\model.py:30) ]] [Op:__inference_predict_function_10471]
Function call stack:
predict_function
NHWC tensor format
All you need to do is a permutation of the dimensions from NHWC to NCHW (or the contrary).
[(https://stackoverflow.com/questions/37689423/convert-between-nhwc-and-nchw-in-tensorflow)]