导入Python类(初始化问题)
将Python模块从项目文件夹导入测试文件夹时遇到问题。当然,我遗漏了一些东西,但在阅读了很多其他答案后,我仍然无法让它发挥作用 文件夹结构如下:导入Python类(初始化问题),python,import,module,Python,Import,Module,将Python模块从项目文件夹导入测试文件夹时遇到问题。当然,我遗漏了一些东西,但在阅读了很多其他答案后,我仍然无法让它发挥作用 文件夹结构如下: /CorpusBuilder /corpusBuilder __init__.py corpus.py # contains Corpus class /tests __init__.py test_corpus.py # trying to import Corpu
/CorpusBuilder
/corpusBuilder
__init__.py
corpus.py # contains Corpus class
/tests
__init__.py
test_corpus.py # trying to import Corpus class — but fails
每个\uuuu init\uuuu.py
文件的具体内容是什么?[顶级文件夹(CorpusBuilder
)是否也需要\uuuu init\uuuuuuuuuuuupy
文件?]test\u corpus.py
中的导入
语句应该说什么
抱歉问了这么多问题:我想我只需要一个清晰的例子就可以了。根本不需要在
\uuuu init\uuuuuuuuy.py
文件中添加任何内容。假设您正在从基本的“CorpusBuilder”目录运行测试,或者以其他方式将该目录放在PYTHONPATH上,那么您的测试语料库文件可以简单地说是来自CorpusBuilder的。在我的方法(根据)中,语料库导入语料库不是顶级测试。而且那里不需要初始化文件。(假设您的模块名称应为corpusBuilder)。如果要使用以下工具运行测试,则需要setup.py(再次:和):
$ python setup.py test
因此,您的结构应该是:
CorpusBuilder/
corpusBuilder/
corpus.py
__init__.py
tests/
__init__.py
test_corpus.py
setup.py
...
在corpusBuilder的init中,您可以定义子模块的导入。这对于不污染名称空间很有用。例如:
from .submodule import foo
from unittest import TestCase
import corpusBuilder
class TestOne(TestCase):
def test_ist_string(self):
s = minimal.test()
self.assertTrue(isinstance(s, basestring))
否则,这只是一个空白文件
中的初始化文件
tests/
根本不需要任何东西,在您的测试语料库中,您需要导入您的模块。例如:
from .submodule import foo
from unittest import TestCase
import corpusBuilder
class TestOne(TestCase):
def test_ist_string(self):
s = minimal.test()
self.assertTrue(isinstance(s, basestring))
您现在应该可以运行测试了。关于如何设置项目,请参见,例如,从基本的'CorpusBuilder'目录,我正在运行$python test/test\u corpus.py
(其中包含来自CorpusBuilder.corpus import corpus的)但仍然会遇到相同的错误。我还必须将目录添加到PYTHONPATH吗?我还尝试将\uuuu init\uuuuu.py
文件添加到基本的“CorpusBuilder”目录。我刚刚收到一个错误,说ImportError:没有名为corpusBuilder.corpus的模块