Python';s os.chdir函数不是';行不通

Python';s os.chdir函数不是';行不通,python,Python,我有一些非常神秘的行为,脚本无法运行。显然,下面的脚本很琐碎,什么也不做,但它是在真实脚本中复制行为。下面是名为test.py的文件中的代码 import os os.chdir('/home/jacob/twcSite') import app app位于'home/jacob/twcSite',该目录与当前目录不同,包含test.py。如果我在命令行中键入python test.py,我会得到ImportError:No module named app。但是,如果我只需键入python启

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

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()
,它确实声称已更改到正确的目录(尽管显然不是这样)。我正在运行Ubuntu 14.04,Python版本2.7.6。

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


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

import os.path, sys
app_dir = os.path.join('home', 'jacob', 'twcSite')
sys.path.insert(0, app_dir)

import app

我想检查一下如何导入您自己的自定义python模块。记住要有一个
\uuuu init\uuuuuuy.py
文件来识别模块。那么,你能解释一下,为什么当我直接在解释器中键入代码时,代码可以工作,而当我在文件中作为脚本运行时,代码却不能工作吗?好的,这就成功了。谢谢当您在解释器中运行时,它实际上可能正在更改目录,并且由于代码是
live
它可以工作。但是当您运行
python example.py
时,它是从shell启动的,因此工作方式不同。不过这只是猜测。好吧,这是合理的解释。更复杂的是,当我在OSX机器上运行脚本时,它的工作方式完全错误。直到我尝试在linux机器上运行它,它才开始给我带来麻烦。但你告诉我的方式在两种情况下都有效。很好的解决方案,效果很好
import os.path, sys
app_dir = os.path.join('home', 'jacob', 'twcSite')
sys.path.insert(0, app_dir)

import app