Python的os.chdir函数不起作用

Python's os.chdir function isn't working

本问题已经有最佳答案,请猛点这里访问。

我有一些非常神秘的行为,脚本无法运行。显然,下面的脚本是微不足道的,什么也不做,但它是在一个真实的脚本中复制行为。这是名为test.py的文件中的代码。

1
2
3
import os
os.chdir('/home/jacob/twcSite')
import app

app位于'home/jacob/twcSite'中,该目录与当前目录不同,包含test.py。如果我在命令行键入python test.py,我会得到ImportError: No module named app。但是,如果我只是简单地键入python来启动交互式解释器并复制粘贴完全相同的三个命令,那么它就可以正常工作而不会出现导入错误。

可能是什么导致了这个错误?它是同一版本的python。完全相同的代码行。为什么在这两种情况下我会有不同的行为?只是为了提供更多的细节,如果您在调用os.chdir之前和之后将输出打印到os.getcwd(),它确实声称已经更改到了正确的目录(显然不是这样)。我在运行Ubuntu14.04,python版本2.7.6。


更改目录不会改变您的导入路径,它只会更改打开文件的目录等等。

参见SysPATH

1
2
3
import sys
sys.path.append('/home/jacob/twcSite')
import app


更改当前目录不是在python中查找模块的方法。由于该目录不包含在python搜索范围内,因此您可以使用以下代码手动添加它:

1
2
3
4
5
import os.path, sys
app_dir = os.path.join('home', 'jacob', 'twcSite')
sys.path.insert(0, app_dir)

import app