execfile在其他文件的工作目录中

时间:2012-11-23 15:10:02

标签: python python-import working-directory execfile

我的结构如下:

c
|-myMain.py
|-.....\someDir
              |-startup.py
              |-subDir
                     |-x.py

我发现很少有类似的问题,答案让我想到了这个问题:

#myMain.py
import os
if __name__ == '__main__':
    os.chdir("c:\\......\\someDir")
    execfile("startup.py")

#startup.py
from subDir import x
if __name__ == '__main__':
    x.doSomething()

问题是当我运行myMain.py:

时,startup.py中的导入失败
ImportError: No module named subDir

但是,当我直接运行startup.py时,它可以正常工作。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

为了让python将subDir视为有效的python结构,您必须将其设为package。通过在该目录中包含__init__.py文件,使其成为一个包。该文件可以为空。

subDir有这样的文件后,语句from subDir import x应该有效。

答案 1 :(得分:0)

未来的读者:

Pradyumna的回答from here为我解决了这个问题:

  

import sys,change" sys.path"通过在运行期间附加路径   时间,然后导入将帮助的模块

[即。 sys.path.append(execfile' s目录)]