当前位置: 首页 > 面试题库 >

ImportError:未命名模块

羊舌承天
2023-03-14
问题内容

我知道这个问题已经被问过多次了。我已经阅读了所有内容,但无法解决问题。以下是我的目录结构。

ankur
     --ankur1
             __init__.py
             util.py
     --ankur2
             main.py
     --__init__.py

在main.py中,我将导入以下内容。

import ankur.ankur1.util

当我在Windows中执行代码时,它工作得很好。但是在Linux中,出现以下错误。

ImportError: No module named ankur.ankur1.util

我还阅读了有关模块和包的官方python文档。


问题答案:

您的包裹结构还可以。您的导入声明很好。唯一缺少的是该软件包在中是可见的sys.path,该位置是可以解析import语句的位置列表。

通常,我们通过在本地“安装”软件包来执行此操作,该软件包会将pip您的代码复制到站点软件包†中。该目录是中的条目之一sys.path,因此,当您将代码安装在站点程序包中时,现在可以照常解析import语句。

但是,要安装代码,您需要为该软件包定义一个安装程序(setup.py脚本)或构建系统(pyproject.toml文件)。您的项目似乎没有任何安装程序或构建系统,因此您需要创建一个安装程序或构建系统(有关详细信息,请参阅《Python打包用户指南》),然后使用来安装软件包pip。如果您现在还不想学习Python封装,则需要找到另一种方法。

可以sys.path直接在中进行修改main.py,这随后使语句import ankur.ankur1.util得以解析。这很骇人,我建议不要这样做。它将增加限制,即执行main.py是包其余部分的唯一入口点,因此任何其他想要的代码都import ankur将首先需要知道main.py文件系统上的路径。那是一个凌乱的方法,应该避免。

解决该问题的另一种方法是使用环境-
有一个环境变量PYTHONPATH,可用于增加模块文件的默认搜索路径。在您的外壳中:

export PYTHONPATH=/path/to/parent

其中parent是包含ankur子目录的目录。

网站软件包的确切位置取决于您的OS /平台,但是您可以通过import sysconfig; sysconfig.get_paths()["purelib"]



 类似资料:
  • 问题内容: 我有一个具有以下目录结构的python应用程序: 在包 main中 ,我有一个名为 MyServer.py 的python模块,该模块具有如下的import语句: 为了使该语句起作用,我将以下行放在 MyServer.py 的开头: 在终端中运行MyServer.py时,出现以下错误: ImportError:没有名为gen_py.lib的模块 我在这里想念的是什么? 问题答案: 您对

  • 问题内容: Python安装在本地目录中。 我的目录树如下所示: 我的代码在这里: 要运行该示例,我编写,并且在代码中有: 我得到了错误: 我已经检查过了,那里有目录。另外,我在文件夹中有该文件,以向指示这是一个软件包。我在示例目录中也有一个。 我不知道为什么Python在时找不到文件。有任何想法吗?可以是权限问题吗?我需要一些执行许可吗? 问题答案: 根据你对orip帖子的评论,我想这是发生了什

  • 问题内容: 代码行: 错误: ImportError:没有名为“ matplotlib”的模块 问题: matplotlib在哪里安装? 一些注意事项: 操作系统:Linux Mint 17.2 我需要使用Python 3.4 解决方案: (对此不满意)。 使用或(接收错误,我也不喜欢这一点)。 使用(可能是完美的选择,但在python2.7目录中安装了matplotlib)。 我如何使Matpl

  • 问题内容: 我已经使用命令安装了redis,但是当我运行Python程序时收到此错误: 知道发生了什么问题还是我也应该安装其他软件包?我正在使用Ubuntu 13.04,并且具有Python 2.7。 问题答案: 要安装redis-py,只需: 或者(您确实应该使用点子): 或从来源: 入门 详细信息:https : //pypi.python.org/pypi/redis

  • 问题内容: 由于某种原因,我不能使用or模块。在python shell中运行以下命令后 要么 我得到这个错误 ModuleNotFoundError:没有名为“ Tkinter”的模块 要么 ModuleNotFoundError:没有名为“ tkinter”的模块 可能是什么原因,我们如何解决呢? 问题答案: 您可能需要使用以下一种(或类似的方式)安装它: 您也可以针对python 3.7提及