Python的os.chdir函数不起作用

时间:2014-05-12 21:57:54

标签: 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.getcwd()之前和之后将输出打印到os.chdir,它确实声称已经更改为正确的目录(尽管显然不是这样)。我正在运行Ubuntu 14.04,Python版本2.7.6。

2 个答案:

答案 0 :(得分:11)

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

请参阅sys.path

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

答案 1 :(得分:1)

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

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

import app