Python ModuleNotFoundError:没有名为'name'的模块,其单位为

2024-05-17 11:34:54 发布

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

我有生产文件,可以很好地处理以下导入:

Ant.py

from TurnDegree import TurnDegree

但是在单元测试期间(运行时:python -m unittest tests/AntTest.py),有一个错误:

  File "/Users/x/Desktop/langton-python/src/Ant.py", line 1, in <module>
    from TurnDegree import TurnDegree
ModuleNotFoundError: No module named 'TurnDegree'

当我将其更改为以下内容时,单元测试正在工作,但现在生产代码失败了:

from .TurnDegree import TurnDegree

有错误:

  File "/Users/x/Desktop/langton-python/src/Ant.py", line 1, in <module>
    from .TurnDegree import TurnDegree
ImportError: attempted relative import with no known parent package

有关完整的源代码,请参见:https://github.com/douma/langtons-ant-python


Tags: infrompyimportsrc错误line单元测试
3条回答

你可以像下面这样做一个try-catch来处理这两种情况。你知道吗

try:
    from TurnDegree import TurnDegree
except Exception as e:
    from .TurnDegree import TurnDegree

这有用吗?你知道吗

尝试查找保存文件的目录,以便轻松导入

import sys, pprint
pprint.pprint(sys.path)

你应该得到这样的结果:

['C:\\Python35\\Lib\\idlelib',
'C:\\Python35',
'C:\\Python35\\DLLs',
'C:\\Python35\\lib',
'C:\\Python35\\lib\\plat-win',
'C:\\Python35\\lib\\lib-tk',
'C:\\Python35\\lib\\site-packages']

每根弦都提供了一个 如果你想让你的解释器找到模块,就把它们放进去。即使所有这些都可以工作,网站包 目录是最好的选择,因为它是用来做这类事情的。看看你的眼睛系统路径找到 您的网站包目录,并保存模块,然后尝试导入,在您使用的任何编译器中执行相同的操作。你知道吗

告诉我它是否有助于你在那里保存它。你知道吗

使用以下方法处理更具体的异常:

try:
    from TurnDegree import TurnDegree
except (ModuleNotFoundError, ImportError):
    from .TurnDegree import TurnDegree

或者

try:
    from .TurnDegree import TurnDegree
except (ModuleNotFoundError, ImportError):
    from TurnDegree import TurnDegree

使用except Exception不是一个好的做法,因为它涵盖了所有可能的异常。这意味着如果您的程序引发不同于ModuleNotFoundErrorImportError的异常,它将静默运行。你知道吗

相关问题 更多 >