从另一个级别的文件夹导入一个类

15

我有一个像这样的Python应用程序

/
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/test_john.py

我的目标是运行单元测试test_john.py,但它需要使用john.py,而它在另一个文件夹中。

当我运行tests/test_john.py时,会得到这个结果

Traceback (most recent call last):
  File "test_john.py", line 2, in <module>
    from john import John
ImportError: No module named john

那么我该如何从crawl文件夹中导入一个类...


你可以尝试使用 from crawl.john import John 或者尝试 from ..crawl.john import John(参考 https://dev59.com/6HNA5IYBdhLWcg3wNa2T) - Sandip Agarwal
2个回答

17

如果您的根目录在pythonpath中,并且您将其作为可导入的包进行了如下处理:

/__init__.py
/crawl.py
/crawl/__init__.py
/crawl/john.py
/tests/__init__.py
/tests/test_john.py

你可以这样做:

from crawl.john import John
或者
from ..crawl.john import John

似乎我的Python路径中没有根文件夹。我以为它会将当前工作目录添加到Python路径中,但实际上并没有。有什么最好的方法可以解决这个问题吗? - Wizzard
这取决于您的配置。在Windows中,对于我的软件包和库,我只需在site-packages中添加一个名为site.pth的文件,并列出文件夹的名称即可。 - joaquin

3
如果您的操作系统支持,可以在“test”目录中创建一个符号链接到“../crawl”,然后使用“from crawl.john import John”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接