在另一个文件夹中导入一个类

时间:2018-03-04 21:12:28

标签: python python-2.7

我的python目录有问题。

我的结构如下:

    • 模块
      • 算法
        • cyphers
          • morse.py
    • 测试
      • 算法
        • cyphers
          • test_morse.py

当我尝试在测试中导入模块时,我得到一个模块未找到错误。 我想导入如下:

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文件。 我正在尝试运行以下测试:

> python -m unittest discover ./tests

2 个答案:

答案 0 :(得分:1)

习惯上使用相对进口 来自.... modules.algorithms.ciphers.morse import * 这可确保您导入正确的Morse文件,否则您可能会导致导入已安装的名为Morse的模块。 这里有两个例子来说明相对导入,比如你有一个名为simulation.py的文件,其中包含该行 来自.animals进口草食动物 在里面。这将从与simulation.py文件相同的目录中的文件导入Herbivore类 现在假设你是一个名为tests的文件夹,在这个文件夹中你有一个名为test_animals.py的文件,它有一行 来自..animals进口草食动物 这将从位于tests文件夹上方文件夹中的名为animals.py的文件中导入Herbivore类。 最后,请注意(至少对于Python 3.6)无法运行使用相对导入的文件,只能导入它。

答案 1 :(得分:0)

如果您将目录标记为__init__.py的模块,您应该只能通过

导入模块
from modules.algorithms.cyphers import morse