Python - 导入包失败

2023-12-05

我在导入包时遇到问题。 我的文件结构是这样的:

filelib/  
    __init__.py
    converters/ 
        __init__.py
        cmp2locus.py
    modelmaker/ 
        __init__.py
        command_file.py

模块内command_file.py我有一个名为CommandFile我想打电话给cmp2locus.py module.

我已经尝试过以下操作cmp2locus.py module:

import filelib.modelmaker.command_file
import modelmaker.command_file
from filelib.modelmaker.command_file import CommandFile

所有这些选项都会返回ImportError: No modules named ...感谢任何有关解决此问题的提示。我不明白为什么这个导入不起作用。


要执行这些导入,您有 3 个选项,我将按照我喜欢的顺序列出它们。 (对于所有这些选项,我将假设 python 3)

相对进口

您的文件结构看起来像一个正确的包文件结构,因此这应该可以工作,但是尝试此选项的其他人应该注意,它要求您位于包中;这对于某些随机脚本不起作用。

您还需要运行从包外部进行导入的脚本,例如导入并从那里运行它,而不是直接运行 cmp2locus.py 脚本

然后您需要使用以下命令将导入更改为相对的.. So:

import filelib.modelmaker.command_file

becomes

from ..modelmaker import command_file

The ..指父文件夹(如文件系统中的隐藏文件)。 另请注意,您必须使用from import语法因为名称开头为..不是 python 中的有效标识符。但是,您当然可以将其导入为您想要使用的任何内容from import as.

也可以看看the PEP

绝对进口

如果您将包裹放入站点包(由返回的目录site.getsitepackages())您将能够使用您在问题中尝试使用的导入格式。请注意,这需要您的软件包的任何用户也将其安装在那里,因此这并不理想(尽管他们可能会这样做,但依赖它是不好的)。

修改python路径

As Meera回答你也可以直接使用 sys.path 修改 python 路径。

我个人不喜欢这个选项,因为它感觉非常“hacky”,但我被告知它很有用,因为它可以让您精确控制可以导入的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python - 导入包失败 的相关文章

随机推荐

  • 我是否使用了太多 jQuery?我什么时候越线?

    最近我发现自己经常使用 jQuery 和 JavaScript 经常做与使用 CSS 之前相同的事情 例如 我使用 JavaScript jQuery 替换表格行颜色或创建按钮和链接悬停效果 这是可以接受的吗 或者我应该继续使用 CSS 来
  • 通过读取kafka的详细信息动态创建flink窗口

    假设 Kafka 消息包含 flink 窗口大小配置 我想读取来自 Kafka 的消息并在 flink 中创建一个全局窗口 问题陈述 我们可以使用 BroadcastStream 来处理上述场景吗 Or 还有其他方法可以支持上述情况吗 Fl
  • 数组交换 - 二维数组

    我正在研究交换二维数组中的索引 我似乎走在正确的轨道上 但它没有按照我想要的方式交换数组 第一行的索引j需要与第 2 行的索引交换j for int j 0 j lt array length j int temp array row1 j
  • HTML 表格导出至 Excel(XLS 或 CSV)

    我正在尝试将 HTML 表格内容导出到 Excel 我看见这个解决方案这有效但没有达到我的预期 因为我无法选择要复制的列 和它不适用于大桌子 还有另一种解决方案是通过js复制并手动粘贴到excel文件 但效果不太好 而且我不太喜欢这种方法
  • 是否存在批量检查区分大小写

    我需要检查给定文件是否存在 区分大小写 out txt 均为小写字母 文件是否存在于我运行脚本的位置 Code Case1 filename out txt if exist filename echo file exist else ec
  • 撤销 OAuth 访问令牌会导致 404 Not Found

    我正在开发一个与 GitHub 集成的应用程序 但在 注销 之前经过身份验证的用户时遇到问题 当我尝试撤销用户的授权令牌时 我从 API 收到 404 Not Found 响应 根据文档 看来我应该能够做一个DELETE请求https ap
  • 按第一行对 numpy 二维数组进行排序,保留列

    在 python 中 我有一个以下形式的 numpy 数组 4 8 2 0 5 3 1 6 8 1 2 2 6 0 3 9 7 6 7 8 5 8 1 1 4 我想按第一行的值从左到右按升序对其进行排序 同时保持整个列完好无损 实际的数组的
  • 无法在 bash 脚本中运行 adb 命令

    我正在尝试从 adb shell 启动 Android 网络共享设置 这样做的主要目的是通过运行 shell 脚本来启用 USB 网络共享模式 我在 Ubuntu 终端 12 04 上使用以下命令集 adb shell am start n
  • Sublime Text 是否有查找打开文件的快捷方式(Eclipse Ctrl + E)?

    Ctrl P of Sublime Text lets me find a file from all project files However there are too many duplicated names I m lookin
  • OpenGL 窗口未打开

    我有来自 OpenGLBook openglbook com 的代码 它可以编译 但无法加载 我完全不知道为什么它没有加载 代码如下 main cpp include main h Methods int main int argc cha
  • C++等待用户输入[重复]

    这个问题在这里已经有答案了 在控制台应用程序中等待用户输入的最佳方法是什么 std cout lt lt press any key to exit wait for user to hit enter or another key 有多种
  • 使用for循环的索引访问变量的名称

    假设我有 4 个字符串 private string string 1 string 2 string 3 string 4 然后假设我有一个 for 循环 如何通过for循环的索引访问变量名 这是我正在谈论的内容的一个想法 for int
  • Oozie 抑制 shell 作业操作的日志记录?

    我有一个运行 shell 脚本的简单工作流程 见下文 shell 脚本运行 pyspark 脚本 该脚本将文件从本地移动到 hdfs 文件夹 当我运行 shell 脚本本身时 它工作得很好 日志在 shell 脚本中通过 gt spark
  • 像关系 SQL 数据库一样使用 JSon (Javascript)

    所以我有一个如下所示的 JSON 变量 var peopleList 1 Name Lisa item1 Name of Item 1 2 Name Marty 3 Name Jordan item1 Name of Item 1 item
  • 如何显示文本视图几秒钟然后使其不可见?

    这个网站是最好的 它对我帮助很大 我是创建 android applecation 的初学者 这是我第一次在这里问问题 我的问题是如何显示一个文本视图5秒并使其消失 当我搜索时我发现了一些代码 但我不知道如何使用它或者也许我使用它以错误的方
  • 输入[类型=文件]验证

    如何检查输入文件是否不为空 我试过 image file click function if image file val alert Chose a file return false 但没有成功 The click事件被触发before
  • Sweave 文档中 R 注释中对图形的动态引用

    我想找到一种使用 LaTeX 的方法 ref 用于在 Sweave Rnw 文件中的 R 代码中进行注释的标记 这里有两个例子 一个是印刷版的 http cm bell labs com cm ms departments sia proj
  • SetLayeredWindowAttributes 使窗口透明仅在部分时间起作用

    我试图使窗口透明 以便只有部分内容可见 我尝试使用SetLayeredWindowAttributes为了实现这一点 这使窗口按照我想要的方式透明 但是只有当窗口图片的一部分位于桌面可见区域之外时 它才有效 由于某种原因 每当窗口完全在屏幕
  • 声音录制

    我是 Android 新手 我正在尝试构建一个应用程序来记录音频数据 我正在使用带有 ADT 插件的 Eclipse Galileo IDE 我的应用程序针对的是 Andriod 2 1 平台 不幸的是example开发指南中提供的抛出许多
  • Python - 导入包失败

    我在导入包时遇到问题 我的文件结构是这样的 filelib init py converters init py cmp2locus py modelmaker init py command file py 模块内command file