python - 导入父目录问题

标签 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?

最佳答案

如果 test_gram.py 在测试文件夹中,那么导入行应该是:

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

关于python - 导入父目录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29806092/

相关文章:

python - 将 StringIndexer 应用于 PySpark Dataframe 中的多个列

Python:获取实例化类的名称?

python - 检查输入是否为正整数

python - 使用 Python 魔法分解 Django URL

python 3.4 字符串操作 - 截断前导零

python - 如何在 python 中将数据框的邮政编码排序到 cargo 区域?

python - 如何在 Go 应用程序中创建多个 Python 实例

python - pyftpdlib 缓慢的 .read 文件阻塞整个主循环

python - 在Python中定义默认类属性?

python - 将 pandas 数据框的两列与字符串列表进行比较