导入父目录问题 - python

我用virtualenv创建了一个Foo项目,在test_file.py中导入File模块时遇到了一些问题

这是我的项目目录

Foo/
├── app
│   ├── __init__.py
│   ├── testfile.py
│   ├── tests
│   │   ├── __init__.py
│   │   └── test_gram.py
│   ├── util
│   │   ├── File.py
│   │   ├── Gram.py
│   │   ├── __init__.py
└── NOTES

test_gram.py:

from app.util.File import loadDataFromPickle

listofdict = loadDataFromPickle(".....")
i = 0
for item in listofdict[:50]:
    print(item)

如果我运行test_gram,则会收到ImportError:

Traceback (most recent call last):
  File "test_gram.py", line 1, in <module>
    from app.util.File import loadDataFromPickle
ImportError: No module named 'app

我究竟做错了什么?我需要将virtualenv-path更改为Foo / app而不是Foo吗?

python大神给出的解决方案

如果test_gram.py在tests文件夹中,则导入行应为:

from ..util.File import loadDataFromPickle$

另一个选择是使用imp模块,通常建议使用该模块,而不是附加sys.path(source here,包括Python 3版本)

import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()