python导入模块ImportError

Posted

技术标签:

【中文标题】python导入模块ImportError【英文标题】:python importing module ImportError 【发布时间】:2012-10-04 22:04:26 【问题描述】:

我正在为 django 应用程序编写自定义测试运行程序。在 django app 文件夹中,我得到了一个像这样的文件夹

但是当我尝试运行测试时出现错误:

ERROR: AdminLoginTest (unittest.loader.ModuleImportFailure)
----------------------------------------------------------------------
ImportError: Failed to import test module: AdminLoginTest
Traceback (most recent call last):
  File "D:\\python27\lib\unittest\loader.py", line 252, in _find_tests
    module = self._get_module_from_name(name)
  File "D:\\python27\lib\unittest\loader.py", line 230, in _get_module_f
rom_name
    __import__(name)
  File "D:\\selenium_tests\tests\admin_panel\AdminLoginTest.py",
line 1, in <module>
    from selenium_tests.SeleniumTestCase import SeleniumTestCase
ImportError: No module named selenium_tests.SeleniumTestCase

在 SeleniumTestCase 中我得到了这样的结果:

class SeleniumTestCase(TestCase):
   body

我认为包裹有问题而不是我的跑步者。 感谢您提前提供任何帮助。

【问题讨论】:

您的 selenium_tests 不在您的 PYTHONPATH 上。尝试将__init__.py 添加到selenium_tests 目录。 我在 selenium_tests 中有 init.pyfile 【参考方案1】:

它不起作用,因为如果我是对的,你作为脚本运行(通过运行单元测试)文件AdminLoginTest.py。运行这个脚本,python解释器无法到达selenium_tests的目录。

一种解决方案是使用相对导入,即

from ..selenium_tests.SeleniumTestCase import SeleniumTestCase

但是这也不起作用,因为您将文件 AdminLoginTest.py 作为脚本运行。仅当文件 AdminLoginTest.py 将作为模块导入时,您才能使用相对导入。

我建议更改目录的结构,将 unittests 作为***目录,将所有其他类作为较低级别的目录。然后导入将起作用。

【讨论】:

如果我理解正确,我应该将 selenium_tests/tests/* 移动到 selenium_tests/*?

以上是关于python导入模块ImportError的主要内容,如果未能解决你的问题,请参考以下文章

python导入模块ImportError

ImportError:无法从部分初始化的模块“dash”导入名称“dcc”-python

模块导入 Python 3.6 上的 ModuleNotFoundError 和 ImportError

python模块以及导入出现ImportError: No module named ‘xxx‘问题

python模块以及导入出现ImportError: No module named 'xxx'问题

python模块以及导入出现ImportError: No module named 'xxx'问题