Python如何/在哪里寻找模块?

How/where does Python look for modules?

我是Python的新手,想要使用py2neo和tornado模块。

为此,我为两个模块运行了setup.py并将它们放入文件夹中

1
C:\Python32\modules\py2neo

1
C:\Python32\modules\tornado

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

1
2
3
4
5
6
7
import sys
sys.path.append(r'C:\Python32\modules')



# Import Neo4j modules
from py2neo import neo4j, cypher

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

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

编辑

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

1
from py2neo import neo4j, cypher

然后以下几行无用:

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

当我运行该程序但是我收到以下错误:

1
2
3
4
5
6
7
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
eo4j.py"
, line 38, in <module>
    import rest, batch, cypher
ImportError: No module named rest

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

1
2
3
4
5
6
7
8
9
10
11
12
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: No module named rest

EDIT2:

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

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

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


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

The only acceptable syntax for relative imports is from .[module]
import name. All import forms not starting with . are interpreted as
absolute imports.

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

更新:我尝试使用pip安装py2neo。 它失败了Python3并成功完成了Python 2.版本是1.2.14。