1

我有这样的结构:

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 时它可以工作。任何帮助,将不胜感激。

4

2 回答 2

1

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

一旦subDir有了这样的文件,该语句from subDir import x应该可以工作。

于 2012-11-23T15:14:56.893 回答
0

未来的读者:

Pradyumna从这里的回答为我解决了这个问题:

导入 sys,通过在运行时附加路径来更改“sys.path”,然后导入有帮助的模块

[即 sys.path.append(execfile 的目录)]

于 2017-08-29T21:56:37.740 回答