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变量
如果变量值是
并且程序包含该行
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文件位于文件夹
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和脚本中)以使程序无误地运行,这将非常感谢。
我怀疑问题是相对导入的
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的
更新:我尝试使用