2017-01-25 4 views
0

Я получаю эту ошибку при попытке импортировать модуль из пакета Prov. Вот содержимое моего файла:ImportError при попытке импортировать модуль Prov в Python

#!/usr/bin/env 
import sys 
egg_path='/Library/Python/2.7/site-packages/prov-1.5.0-py2.7.egg/prov' 
sys.path.append(egg_path) 
#... rest of code 
import model as prov 

def main(): 
    # Create a new provenance document 
    d1 = ProvDocument() # d1 is now an empty provenance document 
    # Declaring namespaces for various prefixes used in the example 
    d1.add_namespace('now', 'http://www.provbook.org/nownews/') 
    d1.add_namespace('nowpeople', 'http://www.provbook.org/nownews/people/') 
    d1.add_namespace('bk', 'http://www.provbook.org/ns/#') 

    # Entity: now:employment-article-v1.html 
    e1 = d1.entity('now:employment-article-v1.html') 
    # Agent: nowpeople:Bob 
    d1.agent('nowpeople:Bob') 

А вот выход:

Traceback (most recent call last): File "prov.py", line 6, in <module> import model as prov File "/Library/Python/2.7/site-packages/prov-1.5.0-py2.7.egg/prov/model.py", line 25, in <module> from prov import Error, serializers ImportError: cannot import name Error

Любые идеи или исправления? Я установил Prov с помощью easy_install prov.

ответ

0

Я нашел ошибку. Имя моего файла, который я пытался импортировать, также называлось prov.py. Это была проблема круговой зависимости.

Спасибо, ребята, за такие быстрые ответы!

1

Вам необходимо переименовать файл модуля prov.py. Это предотвращает импорт сторонней библиотеки, поскольку имя модуля конфликтует.

Удостоверьтесь, что prov.pyc удален.

+0

Можете ли вы уточнить? Файл, который я пытаюсь импортировать, называется моделью, которая пытается импортировать Error и Serializers из файла с именем prov. Однако я не вижу прокси в пакете. – Dre

+0

ahh Я исправил это! Мой файл, который я использовал, также назывался prov.py, поэтому он был циклической зависимостью. – Dre

+0

'from prov import Error, serializers' пытается импортировать' prov'; вместо 'prov' пакета' prov', ваш модуль с именем 'prov' импортируется. Попробуйте добавить следующую строку в начале файла: 'import prov; печать (пров) ' – falsetru