Привет, Джоэл, спасибо за четкое объяснение возможных решений! В итоге я заменил networkx 2.0 на networkx 1.8.1 и получил работающий код. Я определенно рассмотрю долгосрочное решение, которое вы упомянули.

кстЯ пытаюсь запустить код другого исследователя - он описывает модель движения для дорожной сети района залива, которая подвержена сейсмической опасности. Я новичок в Python и поэтому буду очень признателен за помощь в устранении следующей ошибки.

вопрос: Когда я пытаюсь запустить код для примера данных, предоставленных с файлом, следуя инструкциям в README, я получаю следующую ошибку.

DN0a226926:quick_traffic_model gitanjali$ python mahmodel_road_only.py
You are considering 2 ground-motion intensity maps.
You are considering 1743 different site locations.
You are considering 2 different damage maps (1 per ground-motion intensity map).
Traceback (most recent call last):
  File "mahmodel_road_only.py", line 288, in <module>
main()
  File "mahmodel_road_only.py", line 219, in main
  G = get_graph()
  File "mahmodel_road_only.py", line 157, in get_graph
  G = add_superdistrict_centroids(G)
  File "mahmodel_road_only.py", line 46, in add_superdistrict_centroids
  G.add_node(str(1000000 + i))
  File "/Library/Python/2.7/site-packages/networkx-2.0-py2.7.egg/networkx/classes/digraph.py", line 412, in add_node
if n not in self._succ:
  AttributeError: 'DiGraph' object has no attribute '_succ'

отладка: Судя по некоторым другим вопросам, похоже, что эта ошибка связана с проблемой версии networkx (я использую 2.0) или версии Python (я использую 2.7.10). я прошел сквозьруководство по миграции, цитируемое в других вопросах и не нашел ничего, что мне нужно было изменитьmahmodel_road_only.py, Я также проверил файл digraph.py и обнаружил, чтоself._succ определено. Я также проверил приведенное ниже определение get_graph (), которое вызывает networkx, но не обнаружил каких-либо очевидных проблем.

def get_graph():
  import networkx
  '''loads full mtc highway graph with dummy links and then adds a few 
  fake centroidal nodes for max flow and traffic assignment'''
G = networkx.read_gpickle("input/graphMTC_CentroidsLength3int.gpickle")
G = add_superdistrict_centroids(G)
assert not G.is_multigraph() # Directed! only one edge between nodes
G = networkx.freeze(G) #prevents edges or nodes to be added or deleted
return G

Вопрос: Как я могу решить эту проблему? Это вопрос изменения версий Python или Networkx? Если нет, какие дальнейшие действия вы бы порекомендовали для отладки?

Ответы на вопрос(1)

Ваш ответ на вопрос