猿问

Python 包作为应用程序和库

我知道已经有这样的问题了,但是我现在已经研究了一个多小时,我根本无法让它工作。


我有一个使用鼻子测试进行单元测试的包,并且某些类是可导入的。我有以下结构:


setup.py

/RecurrenceRelationSolver

-- __init__.py

-- RecurrenceRelation.py

-- RecurrenceRelationParser.py

-- RecurrenceRelationSolver.py

/tests

-- __init__.py

-- context.py

-- test_homogenous.py

github 在这里:https : //github.com/rowanG077/RecurrenceRelationSolver


我__init__.py看起来像这样,因为我想允许其他人导入这些类:


from .RecurrenceRelation import RecurrenceRelation

from .RecurrenceRelationParser import RecurrenceRelationParser

在我的情况下,RecurrenceRelationSolver.py不包含任何类,而是这样的:


from . import RecurrenceRelationParser

from . import RecurrenceRelation


def main():

   ...


if __name__ == '__main__':

    main()

然后在我的单元测试中__init__.py是空的,context.py我有:


# -*- coding: utf-8 -*-

import sys

import os


sys.path.insert(0, os.path.abspath(

    os.path.join(os.path.dirname(__file__), '..')))


from RecurrenceRelationSolver import RecurrenceRelation, RecurrenceRelationParser

它现在的结构方式我可以成功运行单元测试,但是当我在RecurrenceRelationSolver目录中并运行python RecurrenceRelationSolver.py它时,它不适用于以下消息:


from . import RecurrenceRelationParser

ImportError: cannot import name 'RecurrenceRelationParser'

我不知道该怎么做,因为我从来没有做过这样的模块。无论如何我可以构建我的导入,我可以继续将包用作库并直接运行?


任何帮助表示赞赏!


我正在使用 python 3.6。


侃侃尔雅
浏览 165回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答