2012-02-28 75 views
1

所以我在ArchLinux上安裝了neo4j(AUR Link)並且想用python 3.2測試它。 我使用python 3.2,Eclipse與Pydev。在Eclipse中運行neo4j-Python代碼,使用ArchLinux下的Pydev

我試過下面的代碼從neo4j網站,allthough我認爲它仍然是2.7 python代碼,我試圖將其轉換爲Python 3.2代碼。

下面的代碼:

import os 
libpath = '/usr/share/java/neo4j' 
os.environ['CLASSPATH'] = ';'.join([ os.path.abspath(p) for p in 
os.listdir(libpath)]) 

from neo4j import GraphDatabase 

# Create a database 
db = GraphDatabase('/home/USERNAME/.db/neo4j/HelloWorld') 

# All write operations happen in a transaction 
with db.transaction: 
    firstNode = db.node(name='Hello') 
    secondNode = db.node(name='world!') 

    # Create a relationship with type 'knows' 
    relationship = firstNode.knows(secondNode, name='graphy') 

# Read operations can happen anywhere 
message = ' '.join([firstNode['name'], relationship['name'], secondNode['name']]) 

print(message) 

# Delete the data 
with db.transaction: 
    firstNode.knows.single.delete() 
    firstNode.delete() 
    secondNode.delete() 

# Always shut down your database when your application exits 
db.shutdown() 

,但我得到以下錯誤消息:

Traceback (most recent call last): 
    File "/home/USERNAME/PATH/TO/src/neo4j-HelloWorld.py", line 12, in <module> 
    from neo4j import GraphDatabase 
    File "/usr/lib/python3.2/site-packages/neo4j_embedded-1.6-py3.2.egg/neo4j/__init__.py", line 29, in <module> 
    from neo4j.core import GraphDatabase, Direction, NotFoundException, BOTH, ANY, INCOMING, OUTGOING 
    File "/usr/lib/python3.2/site-packages/neo4j_embedded-1.6-py3.2.egg/neo4j/core.py", line 19, in <module> 
    from _backend import * 
ImportError: No module named _backend 

我只是無法弄清楚什麼是錯的! 我試圖按here所述設置CLASSPATH,但它不會改變任何內容。

我真的很感激任何幫助!

回答

3

您是否通過2to3運行了代碼?

如果不是,我建議你這樣做。

我認爲問題在於3.x中的相對導入語法已更改,有關詳細信息,請參閱PEP328

例如在core.py應該大概from ._backend import *

+0

似乎是這樣的正確答案...不是? – 2012-02-29 16:20:09

+0

雖然沒有爲我工作:core.py 2to3翻譯時沒有得到它的引用編輯,以適應._backend導入* – chiffa 2013-12-17 21:51:13