导入Python类(\uu init_uu.py问题)

2024-09-28 22:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

将Python模块从我的项目文件夹导入tests文件夹时遇到问题。当然我漏掉了一些东西,但是读了很多其他的答案,我还是不能让它发挥作用。在

文件夹结构如下:

/CorpusBuilder
    /corpusBuilder
        __init__.py
        corpus.py    # contains Corpus class
   /tests
       __init__.py
       test_corpus.py   # trying to import Corpus class — but fails

每个__init__.py文件的具体内容是什么?[顶层文件夹(CorpusBuilder)是否也需要__init__.py文件?]^{中的import语句应该说什么?在

抱歉有这么多问题:我想我只需要一个明确的例子来工作。在


Tags: 模块文件项目答案pyimport文件夹init
2条回答

根本不需要将任何内容放入__init__.py文件中。假设您从基本的“CorpusBuilder”目录运行测试,或者将该目录放到PYTHONPATH上,那么您的测试语料库文件可以简单地说from corpusBuilder.corpus import Corpus。在

在我的方法中(根据http://www.scotttorborg.com/python-packaging/index.html),测试不是在顶层的。不需要初始化文件。(假设你的模块名应该是corpusBuilder)。你需要的是设置.py(同样是:http://www.scotttorborg.com/python-packaging/minimal.htmlhttps://docs.python.org/2/distutils/setupscript.html)如果您想运行测试:

$ python setup.py test

所以你的结构应该是:

^{pr2}$

在corpusBuilder的init中,您可以定义子模块的导入。这对于不污染命名空间非常有用。例如:

from .submodule import foo

否则,这只是一个空白文件。在

中的init文件

tests/

不需要任何东西,在你的测试语料库中,你需要导入你的模块。例如:

from unittest import TestCase

import corpusBuilder

class TestOne(TestCase):
    def test_ist_string(self):
        s = minimal.test()
        self.assertTrue(isinstance(s, basestring))

现在应该可以运行测试了。在

相关问题 更多 >