在eclipse中运行pygraphviz 错误(ValueError: Program dot not found in path.)

在macOS系统安装完 pygraphviz后,在终端上运行(python3 test.py)一点问题都没有,但是在eclipse中运行,就出现下面错误:

Traceback (most recent call last):
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/pygraphviz/agraph.py", line 1293, in _get_prog
    runprog = self._which(prog)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/pygraphviz/agraph.py", line 1528, in _which
    raise ValueError("No prog %s in path." % name)
ValueError: No prog dot in path.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/test/projects/relation_graph/relation_graph/test_graph2.py", line 13, in <module>
    A.layout(prog='dot')
  File "/Users/zyh/Library/Python/3.6/lib/python/site-packages/pygraphviz/agraph.py", line 1358, in layout
    data = self._run_prog(prog, ' '.join([args, "-T", fmt]))
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/pygraphviz/agraph.py", line 1308, in _run_prog
    runprog = r'"%s"' % self._get_prog(prog)
  File "/Users/test/Library/Python/3.6/lib/python/site-packages/pygraphviz/agraph.py", line 1295, in _get_prog
    raise ValueError("Program %s not found in path." % prog)
ValueError: Program dot not found in path.

参考:https://stackoverflow.com/questions/13987353/python-valueerror-program-dot-not-found-in-path

解决方法:

1. 查出graphviz的安装路径:

mac-temp:~ zyh$ brew info graphviz
graphviz: stable 2.40.1 (bottled), HEAD
Graph visualization software from AT&T and Bell Labs
https://graphviz.org/
/usr/local/Cellar/graphviz/2.40.1 (500 files, 11.2MB)
  Poured from bottle on 2018-01-09 at 21:01:35

2. 增加变量PATH指向dot的目录:





3,再次执行,已经没有错误:



这个错误通常是由于传递给函数的日期格式不正确造成的。month参数必须在1到12之间,否则就会出现这个错误。 如果您传递的日期格式是字符串,可以尝试按照正确的格式传递日期。例如,如果您想传递2022年5月的日期,可以使用"2022-05"这种格式。 如果您使用的是datetime.date对象,则可以使用对象的strftime方法将日期格式化为字符串,然后再传递给函数。 另外,如果您传递的日期是无效的,例如2月30日,也会导致这个错误的出现。在传递日期之前,最好检查一下日期是否有效。 以下是一个示例程序,用于检查日期是否有效,并将日期格式化为正确的格式: ```python import datetime def check_date(date_str): try: datetime.datetime.strptime(date_str, '%Y-%m-%d') return True except ValueError: return False def format_date(date_str): if check_date(date_str): return date_str else: date_obj = datetime.datetime.strptime(date_str, '%Y%m%d') return date_obj.strftime('%Y-%m') # 示例:将202205格式的日期格式化为2022-05格式 date_str = '202205' formatted_date = format_date(date_str) print(formatted_date) ``` 在这个示例程序,我们定义了两个函数:check_date和format_date。check_date函数用于检查日期是否有效,如果有效则返回True,否则返回False。format_date函数用于将日期格式化为正确的格式,如果传递的日期格式为"YYYY-MM-DD",则直接返回,否则将日期格式化为"YYYY-MM"的格式。 在进行日期格式化之前,我们先调用check_date函数检查日期是否有效。如果日期无效,则抛出ValueError异常。如果日期有效,则使用datetime库的strptime函数将日期字符串转换为datetime.datetime对象,然后使用对象的strftime方法将日期格式化为正确的格式。 您可以参考这个示例程序,根据您的实际情况进行调整和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值