WillKoehrsen / Data-Analysis

Data Science Using Python

Home Page:https://medium.com/@williamkoehrsen/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Graphviz error No such file or directory: 'dot': 'dot'

guifeliper opened this issue · comments

I have an error when I try to run the command

# Write graph to a png file
graph.write_png('tree.png');

The error bellow happens even if I have the tree.dot file and installed pip install graphviz

FileNotFoundError                         Traceback (most recent call last)
/usr/lib/python3.6/site-packages/pydot.py in create(self, prog, format, encoding)
   1914                 arguments=arguments,
-> 1915                 working_dir=tmp_dir,
   1916             )

/usr/lib/python3.6/site-packages/pydot.py in call_graphviz(program, arguments, working_dir, **kwargs)
    135         stdout=subprocess.PIPE,
--> 136         **kwargs
    137     )

/usr/lib/python3.6/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, encoding, errors)
    708                                 errread, errwrite,
--> 709                                 restore_signals, start_new_session)
    710         except:

/usr/lib/python3.6/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)
   1343                             err_msg += ': ' + repr(err_filename)
-> 1344                     raise child_exception_type(errno_num, err_msg, err_filename)
   1345                 raise child_exception_type(err_msg)

FileNotFoundError: [Errno 2] No such file or directory: 'dot': 'dot'

During handling of the above exception, another exception occurred:

FileNotFoundError                         Traceback (most recent call last)
<ipython-input-26-800bf34d174d> in <module>()
      1 # Write graph to a png file
----> 2 graph.write_png('tree.png');

/usr/lib/python3.6/site-packages/pydot.py in new_method(path, f, prog, encoding)
   1732                 self.write(
   1733                     path, format=f, prog=prog,
-> 1734                     encoding=encoding)
   1735             name = 'write_{fmt}'.format(fmt=frmt)
   1736             self.__setattr__(name, new_method)

/usr/lib/python3.6/site-packages/pydot.py in write(self, path, prog, format, encoding)
   1815                 f.write(s)
   1816         else:
-> 1817             s = self.create(prog, format, encoding=encoding)
   1818             with io.open(path, mode='wb') as f:
   1819                 f.write(s)

/usr/lib/python3.6/site-packages/pydot.py in create(self, prog, format, encoding)
   1920                 args[1] = '"{prog}" not found in path.'.format(
   1921                     prog=prog)
-> 1922                 raise OSError(*args)
   1923             else:
   1924                 raise

FileNotFoundError: [Errno 2] "dot" not found in path.

Same error here. after i install pydot and graphviz, still getting the error. Any advise on how to solve this? Thanks!

@jyoz90 you need to download the binary as well, that worked for me.
apk add --update --no-cache graphviz

I confirm what @guifeliper wrote work also on MacOS: you have to install graphviz on the system (brew install graphviz) and not with Pip.

I solved it by installing pydot and graphiz with command
sudo apt install python-pydot python-pydot-ng graphviz
ref

thanks

我通过使用命令ref安装pydot和graphiz解决了它
sudo apt install python-pydot python-pydot-ng graphviz

FileNotFoundError Traceback (most recent call last)
~/opt/anaconda3/lib/python3.7/site-packages/pydot.py in create(self, prog, format, encoding)
1914 arguments=arguments,
-> 1915 working_dir=tmp_dir,
1916 )

~/opt/anaconda3/lib/python3.7/site-packages/pydot.py in call_graphviz(program, arguments, working_dir, **kwargs)
135 stdout=subprocess.PIPE,
--> 136 **kwargs
137 )

~/opt/anaconda3/lib/python3.7/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, encoding, errors, text)
774 self._closed_child_pipe_fds = False
--> 775
776 try:

~/opt/anaconda3/lib/python3.7/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)
1521 pass
-> 1522
1523 try:

FileNotFoundError: [Errno 2] No such file or directory: 'dot': 'dot'

During handling of the above exception, another exception occurred:

FileNotFoundError Traceback (most recent call last)
in
----> 1 plot_tree(regressionTree, ['Years','Hits'])

in plot_tree(estimator, features, class_names, filled)
11 precision = 2)
12 graph = pydot.graph_from_dot_data(dot_data.getvalue())[0]
---> 13 return Image(graph.create_png())

~/opt/anaconda3/lib/python3.7/site-packages/pydot.py in new_method(f, prog, encoding)
1721 """Refer to docstring of method create."""
1722 return self.create(
-> 1723 format=f, prog=prog, encoding=encoding)
1724 name = 'create_{fmt}'.format(fmt=frmt)
1725 self.setattr(name, new_method)

~/opt/anaconda3/lib/python3.7/site-packages/pydot.py in create(self, prog, format, encoding)
1920 args[1] = '"{prog}" not found in path.'.format(
1921 prog=prog)
-> 1922 raise OSError(*args)
1923 else:
1924 raise

FileNotFoundError: [Errno 2] "dot" not found in path.

I 'brew install graphviz' , but still has this problem. what I did is following the introduction to statistic learning by python, before this code, there is a code to find the location of graphviz

find the location of graphviz so dot.exe is in the PATH

import os
common_path = os.path.commonpath([path for path in os.environ["PATH"].split(';') if 'Anaconda' in path])
dot_path = os.path.join(common_path, 'Library', 'bin', 'graphviz')
os.environ["PATH"] += os.pathsep + dot_path
but my case is no 'Anaconda' capitalized A, I used 'anaconda' instead, that's all.
Then I got the error message.

While in the virtual environment, the following installation methods does not works

sudo apt install python-pydot python-pydot-ng graphviz

I solved it by installing pydot and graphiz with command
sudo apt install python-pydot python-pydot-ng graphviz
ref

ThankYou!!!!!!!!!!

What about Red Hat system?

This worked for me in virtual machine with anaconda:
sudo apt install graphviz

I confirm what @guifeliper wrote work also on MacOS: you have to install graphviz on the system (brew install graphviz) and not with Pip.

Any idea why this is needed?

Installing via homebrew simply installs the binary in /usr/local/Cellar as opposed to pip which installs in /usr/local/lib/python@version/site-packages.

Both are available on PATH so i struggle to see why there would be a difference, even though there definitely is..

What about Red Hat system?

This worked for me on Fedora 36

sudo dnf install graphviz

sudo apt install graphviz

thanks!!

The solution using "brew install graphviz" works very fine after trying to do something in Python. Thankyou @guifeliper

I confirm what @guifeliper wrote work also on MacOS: you have to install graphviz on the system (brew install graphviz) and not with Pip.

And the Homebrew command from @vlavorini works with Jupyter Notebook as well. Thanks!

commented

I confirm that this works on macbook. Thank you so much

I confirm what @guifeliper wrote work also on MacOS: you have to install graphviz on the system (brew install graphviz) and not with Pip.