4

我对 Python 完全陌生,想使用 py2neo 和 tornado 模块。

为了做到这一点,我为两个模块运行 setup.py 并将它们放入文件夹中

C:\Python32\modules\py2neo

C:\Python32\modules\tornado

在主程序中,我猜这些行告诉解释器在哪里查找文件:

import sys
sys.path.append(r'C:\Python32\modules')



# Import Neo4j modules
from py2neo import neo4j, cypher

阅读本书我还添加了环境变量(在 Windows 7 中)

PYTHONPATH = C:\Python32\modules;C:\Python32\modules\tornado;C:\Python32\modules\py2neo

编辑

现在我发现必须重新启动 Python Shell 才能加载修改后的 PYTHONPATH 变量如果变量值是PYTHONPATH = C:\Python32\modules 并且程序包含该行

from py2neo import neo4j, cypher

那么以下几行是无用的:

import sys
sys.path.append(r'C:\Python32\modules')

但是,当我运行程序时,出现以下错误:

Traceback (most recent call last):
  File "C:\...\Python Projects\HelloPython\HelloPython\Hellopy2neo.py", line 15, in <module>
    from py2neo import neo4j, cypher
  File "C:\Python32\modules\py2neo\neo4j.py", line 38, in <module>
    import rest, batch, cypher
ImportError: No module named rest

在文件 neo4j.py 中有以下几行:

try:
    import json
except ImportError:
    import simplejson as json
try:
    from urllib.parse import quote
except ImportError:
    from urllib import quote
try:
    from . import rest, batch, cypher
except ImportError:
    import rest, batch, cypher #line38

并且 rest.py 文件位于文件夹中C:\Python32\modules\py2neo,所以我不知道为什么会出现错误

ImportError:没有名为 rest 的模块

编辑2:

尝试在 Python Shell 中导入 py2neo 目录并列出我得到的模块:

>>> import py2neo
>>> [name for name in dir(py2neo) if name[0] != '_']
['rest']

我想也有一些不必要的导入,如果有人解释,应该添加和排除哪些导入(在 PYTHONPATH 和脚本中)以使程序无错误运行,我将非常感激。

4

1 回答 1

1

我怀疑问题是import相对导入的语法在从 Python 2 到 Python 3的过渡中发生了变化:

相对导入唯一可接受的语法是 from .[module] import name。所有不以 . 开头的导入表格。被解释为绝对进口。

您安装的模块使用在 Python 2 中可以使用的语法。您可以为 Python 2 安装它们,或者寻找py2neo支持 Python 3 的版本,或者尝试手动移植它(该import行应该看起来像from . import rest,但你以后可能会遇到其他问题)或2to3工具。

更新:我尝试py2neo使用pip. Python3 失败,Python 2 成功完成。版本为 1.2.14。

于 2012-06-17T09:28:35.633 回答