【发布时间】:2009-04-20 09:22:13
【问题描述】:
我将 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
进入子目录并像这样导入:
import subdir.sub1 as sub1
python 2.5 有变化吗?这意味着 python 2.4 中的当前工作目录是从调用进程继承的,而在 python 2.5 中,它被设置为主脚本所在的位置。
[编辑3] 我现在纠正了这个问题。我必须道歉,我起初过度简化了示例,并在没有检查我的简化示例的情况下删除了导致错误的原因。 [/edit3]
【问题讨论】:
-
请保留问题,只是说,您发现了问题以及问题所在... 对“抱歉,我删除了问题”之类的文字投了反对票!
-
你很聪明,但在我改变它之前就投下了反对票。这就是我删除它以免获得更多反对票的原因(因为 nic 反对票甚至懒得评论她或他为什么这样做。这是自我保护)
-
是的,但是删除问题仍然不是正确的方法!我知道如果他们对正确的问题投反对票,这是不对的。如果你顺其自然会更容易......每个人都会无缘无故地得到一些反对意见。
-
我把它回滚到原来的样子——我不太清楚这里发生了什么,但我不明白你为什么要把你的问题变成“感谢投票”的事情——这肯定会吸引更多的反对票。如果你不是很喜欢它,我猜你可以删除它
-
我不知道删除选项,我会看看。删除也会删除我的反对票吗?请理解,对于无缘无故的匿名投票,必须有一些防御措施。我认为这在 SA 是一件坏事。人们将精力投入到问题和答案中,并且应该始终解释反对意见