如何在Python中修复“ImportError: No module named ...”错误?

12 浏览
0 Comments

如何在Python中修复“ImportError: No module named ...”错误?

如何正确解决ImportError错误?\n我有以下目录结构:\n

/home/bodacydo
/home/bodacydo/work
/home/bodacydo/work/project
/home/bodacydo/work/project/programs
/home/bodacydo/work/project/foo

\n我当前在目录中:\n

/home/bodacydo/work/project

\n现在如果我输入以下命令:\n

python ./programs/my_python_program.py

\n我立即得到以下错误:\n

ImportError: No module named foo.tasks

\n./programs/my_python_program.py 包含以下代码行:\n

from foo.tasks import my_function

\n我无法理解为什么Python找不到 ./foo/tasks.py - 它在那里。\n如果我在Python shell中执行它,那么它可以运行:\n

python
>>> from foo.tasks import my_function

\n只有当我通过 python ./programs/my_python_program.py 脚本调用它时,它才无法运行。

0
0 Comments

问题出现的原因是在运行Python文件时,使用了类似于"python path/to/file.py"的命令,这会将"path/to"添加到PYTHONPATH中的第一个位置(sys.path)。

解决方法是使用"python -m module.path"命令来运行Python模块,这将正确地设置sys.path[0],并且是执行模块的更可靠的方式。

这篇文章将介绍如何修复"ImportError: No module named ..."错误。有时候在运行Python文件时,可能会遇到类似于"ImportError: No module named ..."的错误。这种错误通常是由于Python解释器无法找到所需的模块而导致的。

修复这个错误的一个更好的方法是使用"python -m module.path"命令来运行Python模块,而不是设置PYTHONPATH。这个方法会正确设置sys.path[0],并且是执行模块的更可靠的方式。

另外,还有一种常见的错误是在运行Python文件时使用了类似于"python path/to/file.py"的命令。这个命令会将"path/to"添加到PYTHONPATH中的第一个位置(sys.path),从而导致无法找到所需的模块。为了解决这个问题,我们可以改为使用"python -m module.path"命令来运行Python模块。

总之,修复"ImportError: No module named ..."错误的一个更好的方法是使用"python -m module.path"命令来运行Python模块,而不是设置PYTHONPATH。这个方法会正确设置sys.path[0],并且是执行模块的更可靠的方式。

0
0 Comments

在Python中出现"ImportError: No module named ..."错误的原因是没有找到对应的模块。解决方法是检查是否在目标文件夹中有一个名为__init__.py的文件,如果没有,Python将无法将该文件夹识别为Python包。可以参考Python教程中关于包的部分了解更多信息。

另一个可能的原因是$PYTHONPATH的设置问题。可以尝试使用Ignacio提供的解决方案来解决这个问题。

需要注意的是,__init__.py文件的存在是为了让Python将目录视为包含包的目录,这样可以防止具有相同名称的目录(例如string)无意间隐藏后面出现的有效模块。在最简单的情况下,__init__.py可以只是一个空文件。

感谢提供帮助,这样就节省了我一些时间。

0
0 Comments

Python中出现"ImportError: No module named ..."错误的原因是因为Python不会将当前目录添加到sys.path中,而是添加脚本所在目录。解决方法是将"/home/bodacydo/work/project"添加到sys.path或$PYTHONPATH中。

那么在根文件夹中有__init__.py的意义是什么呢?如果你编辑了sys.path或pythonpath,它似乎没有任何作用。

__init__.py只是指示该目录应该被视为一个包,当其父目录在sys.path中或者本身是一个包时。

此外,还要检查文件夹的权限。这是我遇到的问题。

我尝试了这两个方法仍然不起作用,我在macOS Sierra(10.12)上使用的是Python 2.7。

要将当前目录添加到Python路径中,请使用export PYTHONPATH=`pwd`。

对我来说有效的方法是将项目的父目录添加到$PYTHONPATH中,对于你的情况来说是/home/bodacydo/work...参考这个答案。

0