尝试运行Python scrip时出现“ImportError:No module named”

2024-04-26 10:51:07 发布

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


Tags: python
3条回答

运行python项目时,只需在显示错误的文件夹下创建一个名为__init__.py的空python文件。

出现此问题的原因是命令行IPython解释器使用当前路径的方式与单独进程的方式不同(无论是IPython笔记本、外部进程等)。IPython将查找要导入的模块,这些模块不仅可以在sys.path中找到,还可以在当前工作目录中找到。从命令行启动解释器时,当前操作的目录与启动ipython的目录相同。如果你跑

import os
os.getcwd() 

你会发现这是真的。

但是,假设您使用的是ipython笔记本,请运行os.getcwd(),而您当前的工作目录是您在ipython笔记本的config.py文件(通常使用c.NotebookManager.notebook_dir设置)中告诉笔记本从中操作的文件夹。

解决方案是向python解释器提供模块的路径。最简单的解决方案是将该路径附加到sys.path列表中。在笔记本中,首先尝试:

import sys
sys.path.append('my/path/to/module/folder')

import module-of-interest

如果这不起作用,您手上的问题与要导入的路径无关,您应该提供有关您的问题的更多信息。

解决这个问题的更好(更持久)方法是设置PYTHONPATH,它为解释器提供了查找python包/模块的附加目录。编辑或将PYTHONPATH设置为全局变量依赖于操作系统,这里将详细讨论UnixWindows

确保他们都使用同一个解释器。在Ubuntu上发生的事:

$ ipython3 -c 'import sys; print(sys.version)'
3.4.2 (default, Jun 19 2015, 11:34:49) \n[GCC 4.9.1]

$ python3 -c 'import sys; print(sys.version)'
3.3.0 (default, Nov 27 2012, 12:11:06) \n[GCC 4.6.3]

这两个口译员的sys.path是不同的。为了解决这个问题,我删除了Python3.3。

相关问题 更多 >