Draw_grapviz: отсутствует ошибка зависимости Python

Я пытаюсь создать филогенетическое дерево, используя метод Phylo.draw_graphviz из библиотеки BioPython и PyGraphviz. Я прочитал документы и установил networkx, matplotlib, а также Graphviz 2.38 для Windows. Затем я установил PyGraphviz из неофициальных двоичных файлов Windows для пакетов расширений Python. Я следовал следующему фрагменту кода, приведенному в Вики Biopython:

from Bio import Phylo
import pylab

tree = Phylo.read('allseqs.dnd', 'newick')
Phylo.draw_graphviz(tree)
pylab.show()

Однако я продолжаю сталкиваться с этой ошибкой:

Traceback (most recent call last):
  File "C:\Users\GAMER\Desktop\Methybase\Data\Helicobacter  pylori  F16\graphtezt.py", line 5, in <module>
    Phylo.draw_graphviz(tree)
  File "c:\users\gamer\desktop\padai\coding\user\lib\site-packages\Bio\Phylo\_utils.py", line 155, in draw_graphviz
    raise MissingPythonDependencyError(
UnboundLocalError: local variable 'MissingPythonDependencyError' referenced before assignment

Исходный код доступен здесь. Я проверил строку 155, как предложила трассировка, и вот что она говорит:

raise MissingPythonDependencyError( 
                 "Install PyGraphviz or pydot if you want to use draw_graphviz.")

Любое решение будет высоко оценено


person letsc    schedule 15.10.2014    source источник


Ответы (1)


Судя по коду по этой ссылке, кажется, что отсутствует важная строка. Это должно быть from Bio import MissingPythonDependencyError, и оно должно отображаться с отступом между строками 154 и строками 155. Проблема в том, что функция не была импортирована до ее вызова, так как она импортируется только в строке 134, если модуль networkx отсутствует.

person Autumnal    schedule 15.10.2014
comment
Я попытался отредактировать код и добавить import, но все равно выдает ту же ошибку. - person letsc; 16.10.2014
comment
Это странно, я ожидал, что это вызовет исключение. но чтобы это было не одно и то же. Вы уверены, что ошибка точно такая же? - person Autumnal; 16.10.2014
comment
Да, я все еще получаю ту же ошибку. Что еще более сбивает с толку, так это то, что после того, как я добавлю import , оператор raise.. в 155 переходит к 156, но ошибка все еще показывает, что ошибка находится в залоге 155 в raise... - person letsc; 16.10.2014
comment
Из этого следует, что интерпретатор кэширует модуль. На самом деле я почти уверен, поскольку номер строки соответствует тому, что раньше было в этой строке, что что-то нуждается в перезагрузке. Появились ли файлы с расширением .pyc или .pyo? - person Autumnal; 16.10.2014
comment
Я попытался закомментировать файл raise. Та же ошибка. Как это может дать мне ошибку в комментарии? - person letsc; 16.10.2014
comment
@letsc убедитесь, что вы удалили все файлы .pyc после сохранения изменений и перед их запуском. - person MattDMo; 16.10.2014
comment
@MattDMo - я сделал. Не создано .pyc файлов - person letsc; 16.10.2014
comment
Вы на python3 или python2? В python3 у вас будет папка с именем __pycache__ с .pyc файлами в ней. - person xbello; 16.10.2014
comment
Я использую python 2.7 - person letsc; 16.10.2014