【发布时间】:2016-12-11 11:17:26
【问题描述】:
我发现在 Python 中导入模块很复杂,所以我正在做实验来解决它。这是我的文件结构:
PythonTest/
package/
__init__.py
test.py
__init__.py的内容:
package = 'Variable package in __init__.py'
from package import test
test.py的内容:
from package import package
print package
当我离开package(在PythonTest)并执行python package/test.py时,我得到:
Traceback (most recent call last):
File "package/test.py", line 1, in <module>
from package import package
ImportError: No module named package
预期的输出是Variable package in __init__.py。我做错了什么?
但是,我可以在交互模式下获得预期的输出:
sunqingyaos-MacBook-Air:PythonTest sunqingyao$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package
Package in __init__.py
【问题讨论】:
-
似乎没有为
package包设置模块搜索路径。 -
@user2357112 所以我应该设置
PYTHONPATH还是修改sys.path?但是为什么在交互模式下一切正常? -
我假设您从与文件相同的目录启动交互模式,因此该路径会自动成为搜索路径的一部分。尝试从一个完全不同的目录启动 python
-
我调用交互模式的目录正是我执行
python package/test.py的目录。当我进入一个完全不同的目录时,这两种方法都不起作用。 -
python package/test.py将您正在执行的脚本的目录添加到搜索路径,而不是您启动脚本的目录。
标签: python python-2.7 import module python-import