当前工作目录不再从Python2.5以后的调用进程继承?

2024-06-02 05:55:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Windows2003Server上将我的python版本从2.4更新到2.5。在

在2.4中,我可以像这样从子目录c:\application\subdir\导入一个文件“sub1.py”:

import sub1

只要调用脚本主.py位于c:\中的应用程序是这样启动的:

^{pr2}$

但在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

Python2.5有什么变化吗?这意味着python2.4中的当前工作目录是从调用进程继承的,而在python2.5中,它被设置为主脚本所在的位置。在

[编辑3] 我现在更正了这个问题。我必须承认,我在开始时过度简化了示例,并且在没有检查简化示例的情况下排除了导致错误的原因。 [/edit3]


Tags: 文件pyimport版本脚本应用程序示例application
3条回答

您可以检查python在哪里搜索模块。变量中包含位置列表搜索路径. 在

或者显示可以交互执行的简单脚本:

import sys

for x in sys.path:
  print x

默认情况下,python将搜索正在执行的目录以及原始脚本所在的目录。在

另外,尝试将PYTHONPATH环境变量设置为包含“.\”目录。在

导入副总裁您需要:

import sub      # not sub1

您需要进行以下更改:

  • 通过向目录中添加一个空的__init__.py文件,将subdir变成一个包
  • 将导入更改为:from subdir import sub1

相关问题 更多 >