Importing a class in another folder
我对python目录有问题。
我的结构如下:
- Python
- 模块
- 算法
- 密码器
- 莫尔斯PY
- 密码器
- 算法
- 测验
- 算法
- 密码器
- 测试莫尔斯PY
- 密码器
- 算法
- 模块
当我尝试在测试中导入模块时,我得到一个未找到模块的错误。我尝试导入如下内容:
1 2 3 4 | parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) sys.path.append(parent_dir_name +"/../../../") from modules.algorithms.cyphers.morse import * |
我在所有目录中也有init文件。我正在尝试运行以下测试:
1 | > python -m unittest discover ./tests |
号
习惯上使用相对进口产品
1 | from ....modules.algorithms.ciphers.morse import * |
号
这样可以确保导入正确的莫尔斯文件,否则会有导入已安装的名为莫尔斯的模块的风险。
这里有两个例子来说明相对导入,假设您有一个名为simulation.py的文件,其中有一行
1 | from .animals import Herbivore |
在里面。这将从与simulation.py文件位于同一目录中的文件导入草食动物类。
现在假设您是一个名为tests的文件夹,在这个文件夹中,您有一个名为test_animals.py的文件,其中有一行
1 | from ..animals import Herbivore |
。
这将从位于tests文件夹上方的文件夹中名为animals.py的文件导入草食动物类。
最后,请注意(至少对于Python3.6)不能运行使用相对导入的文件,只能导入它。
如果使用
1 | from modules.algorithms.cyphers import morse |