我用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()