2014-10-15 3 views
1

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

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 

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

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

Любое решение будет очень цениться

ответ

0

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

+0

Я попытался отредактировать код и добавить в 'import', но он по-прежнему дает ту же ошибку. – letsc

+0

Это странно, я бы ожидал, что это вызовет исключение. но для него не быть одним и тем же. Вы уверены, что ошибка точно такая же? – Autumnal

+0

Да, я все равно получаю ту же ошибку. Еще более запутанным является то, что после того, как я добавляю 'import', оператор' raise..' в 155 переходит к 156, но ошибка все еще показывает, что ошибка находится в залоке 155 в 'raise ...' – letsc

Смежные вопросы