You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.7虚拟环境运行demo.py时遇AttributeError:module 'networkx' has no attribute 'nx_pydot'且无法生成TXT文件

问题解决指南

1. 修复NetworkX的AttributeError: module 'networkx' has no attribute 'nx_pydot'

你碰到的这个错误核心原因有两个:

  • 你使用的NetworkX 1.7是非常老旧的版本(2012年发布),它的模块结构和后续版本差异很大,nx_pydot并不是直接挂载在networkx主模块下的子模块;
  • 你已经显式从networkx.drawing.nx_pydot导入了write_dot函数,却还要通过nx.nx_pydot.write_dot层级调用,这既没必要,也不符合当前版本的模块逻辑。

具体修复方案:

修改takahe2.py里的write_dot函数代码,直接使用已经导入的函数即可:

def write_dot(self, dotfile):
    """ Outputs the word graph in dot format in the specified file. """
    # 直接调用导入的write_dot,无需通过nx.nx_pydot层级
    write_dot(self.graph, dotfile)

如果后续还遇到NetworkX相关的其他兼容性问题,建议考虑升级到2.x系列的稳定版本(注意提前排查API兼容性,新版本有不少功能重构)。

2. 修复无法创建/写入TXT文件的问题

控制台能正常输出但文件没生成,大概率是因为前面的NetworkX异常导致代码中断,根本没执行到保存文件的逻辑。不过即使修复了异常,你的保存代码还有几个潜在坑:

潜在问题1:文件打开模式错误

你用的'+w'是无效的模式,正确的写入模式用w就足够,如果需要读写结合可以用w+。

潜在问题2:目录与权限隐患

  • 要确认createFolder('DataSet/')函数能正确处理目录已存在的情况,避免因目录创建失败导致写入出错;
  • 检查Linux下当前用户对DataSet/目录是否有写入权限,可通过ls -l DataSet/查看权限,必要时用chmod调整。

优化后的保存代码:

# 用os.makedirs更可靠地确保目录存在(自动处理已存在的情况)
import os
os.makedirs('DataSet/', exist_ok=True)

# 用with语句自动管理文件句柄,避免漏关文件
file_path = f'DataSet/{serial_no}.txt'
with open(file_path, 'w', encoding='utf-8') as fi:
    fi.write(summary)

with语句会自动关闭文件句柄,避免因未关闭文件导致的写入失败;指定编码utf-8还能规避中文等非ASCII字符的编码问题。


内容的提问来源于stack exchange,提问作者louiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 17:57:37