我在Windows 2003服务器上将我的python版本从2.4更新到2.5。
在2.4中,我可以从子目录c:\ application \ subdir \中导入文件“sub1.py”,如下所示:
import sub1
只要生成在c:\ application中的调用脚本main.py像这样启动:
c:\application\subdir>python ..\main.py
但在2.5中它不再适用于我:
C:\application\subdir>python ..\main.py
Traceback (most recent call last):
File "main.py", line 3, in <module>
import sub1
ImportError: No module named sub1
现在我可以放一个空文件
__init__.py
进入subdir并像这样导入:
import subdir.sub1 as sub1
python 2.5有变化吗?这意味着python 2.4中的当前工作目录是从调用进程继承的,而在python 2.5中它被设置为主脚本所在的位置。
[EDIT3] 我现在纠正了这个问题。我必须道歉,我最初过度简化了示例并删除了导致错误的原因,而没有检查我的简化示例。 [/ EDIT3]
答案 0 :(得分:4)
导入sub.py,您需要:
import sub # not sub1
答案 1 :(得分:2)
您可以查看python搜索模块的位置。位置列表包含在变量sys.path。
中您可以创建一个简单的脚本(或以交互方式执行),显示以下内容:
import sys
for x in sys.path:
print x
默认情况下,python将搜索正在执行它的目录以及原始脚本所在的位置。
另外,尝试将PYTHONPATH环境变量设置为包含“。\”目录。
答案 2 :(得分:1)
我认为sub1
是拼写错误?在您的问题中,您有时会引用sub
,有时引用sub1
。
我首先要检查c:\application
中是否存在sub.py文件。
答案 3 :(得分:1)
您需要进行以下更改:
subdir
文件添加到目录__init__.py
转换为包
from subdir import sub1
答案 4 :(得分:0)
将此目录添加到您的python路径