Python:导入与函数同名的模块

2024-01-11

背景知识:第一次问SE问题。我对 Python 还很陌生,一般来说编程经验也不是很多。我四处搜寻,但没有找到这个问题的答案,非常感谢您的帮助。

我的问题是:如何导入与函数同名的模块?

具体来说,我正在使用 Python 符号数学库 sympy 0.7.5,使用 Python 2.7。

Sympy 的结构如下:

sympy
 |
 +-- __init__.py
 +-- simplify
       |
       +-- __init__.py
       +-- simplify.py
       |      |       
       |      +-- def simplify(...)
       |
       +-- fu.py
            |
            +-- def TR8(...)
            +-- def fu(...)

我想做的是从这个结构导入 fu.py,这样我就可以调用 TR8 函数。然而,我的运气并不好。

这有效:

from sympy.simplify.fu import *

TR8(some_expression)

到目前为止,这是我访问 TR8 的唯一方法,但我知道这不是推荐的方法。

以下尝试失败:

from sympy.simplify import fu

fu.TR8(some_expression)
>>AttributeError: 'function' object has no attribute 'TR8'

from sympy import fu

fu.TR8(some_expression)
>>AttributeError: 'function' object has no attribute 'TR8'

我不确定,但在我看来,Python 认为我正在尝试导入名为 fu 的函数而不是名为 fu 的模块。同样,当我这样尝试时:

import sympy.simplify.fu as fu
>>AttributeError: 'function' object has no attribute 'fu'

这里Python似乎认为我正在谈论函数sympy.simplify.simplify,而不是模块sympy.simplify。

那么,当该模块包含与该模块同名的函数时,是否有正确的方法要求 Python 导入该模块?


sympy/simplify/__init__.py https://github.com/sympy/sympy/blob/master/sympy/simplify/__init__.py包含以下行:

from .fu import FU, fu

这隐藏了fu模块通过分配fu在您期望模块运行的地方执行函数,从而阻止大多数导入它的方式。

如果您只需要 TR8 功能,您可以导入:

from sympy.simplify.fu import TR8

如果您需要fu模块中,有一个条目保留在sys.modules:

import sympy.simplify.fu
import sys

fu_module = sys.modules['sympy.simplify.fu']

它很丑,但应该有用。据我所知,这是获取模块本身的最简单方法。

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

Python:导入与函数同名的模块 的相关文章

随机推荐

  • Rails:保存后验证关联?

    我有一个User模型有很多roles 角色包含一个user id领域 我想要validate presence of 问题是 如果我在创建时为用户分配角色 验证将失败 因为未设置 user id 现在我do想要验证 user id 是否存在
  • 连接两个具有不同数据的相同表结构

    Edit After attempting the COALESCE method I m now seeing an issue where the data is repeating itself with the same data
  • 为 Ubuntu 中的现有文件创建新的 BitBucket 存储库

    我有一些文件想要添加到 BitBucket 上的新存储库中 如何使用 Ubuntu 命令行执行此操作 另一种方法是首先从 BitBucket 网站创建存储库 但我不知道如何将存储库克隆到非空目录中 更多详细信息布鲁斯的评论 https st
  • MySQL 查询当前周的yearweek 从周四开始,周三结束

    我有一个SQL设置语句以获取当前日历周的数据 默认情况下 这会抓取从周日开始到周六结束的数据 我希望改变这一点 以便日历周的开始是星期四 星期三结束 以下是我的发言 SELECT FROM transactions WHERE yearwe
  • 使用 mongo java 驱动程序执行查找时 Cosmos Db 回复消息长度错误

    使用 Mongo Java 驱动程序版本 3 4 2 尝试对包含大约 700 个文档的集合执行查找查询已开始引发以下异常 当集合较小时 这种情况不会发生 这些限制看起来是在连接过程中设置的 com mongodb MongoInternal
  • 聚合物服务和服务人员

    我正在尝试开始调试我的聚合物应用程序 我通过复制我的想法手工制作了它PolymerCLI Polymer init does 我不确定正在加载服务人员的是什么 开发的默认选项只做了一个console info 打电话说它已被禁用以进行开发
  • 在 R 中查找给定数据的“行方式”“众数”[重复]

    这个问题在这里已经有答案了 Unlike rowMeans and rowMedians 这给了我们计算出来的数字 mode x 给出数据的存储模式 我的问题 对于以下数据框 我如何计算row wise Mode Data Item A B
  • 如何在 OS X 上监视文件更改?

    我希望收到有关写入给定文件的通知 无需轮询 无需从文件中读取 也无需监视父目录并查看文件修改时间戳 我怎么做 我找不到一个简单的例子 所以我贡献我的想法以供将来参考 interface FileWatch property assign d
  • Delphi 中的 DataModule (dm) 是什么?

    在您的项目中使用 DataModule 的目的是什么 与普通的类或模块相比 它有什么特殊的属性吗 它通常用于什么约定 数据模块是一种非可视 表单 容器 可以包含非可视组件 通常是数据库组件 尽管可以添加任何组件 例如对话框和Indy htt
  • 数组初始化C

    这个初始化的意义是什么 char arr 10 0 我熟悉char arr 10 0 它将所有元素设置为零 并且char arr 10 1 2 它将前两个元素设置为 1 和 2 ascii 其余元素设置为 0 我对上面的格式不熟悉 快速测试
  • 将元组转换为 proplist

    如何从 MongoDB 转换元组 id lt lt vasya gt gt password lt lt 12ghd gt gt age undefined 到支柱列表 id lt lt vasya gt gt password lt lt
  • 为什么当我运行此测试时,这个 sinon 间谍没有被调用?

    我有一个骨干模型 class DateTimeSelector extends Backbone Model initialize gt bind change date updateDatetime bind change time up
  • 在 ASP.NET 中下载文件而不弹出窗口

    我正在使用代码下载文件 btnDownloadTemplate Attributes Add onClick window open StudyReport WordReportTemplate doc OpenTemplate resiz
  • 使用 selenium 在 Chrome 中“未知错误:无法读取 null 的属性‘scrollleft’”

    在 Chrome 中 当我单击按钮时 出现 未知错误 cannot read property scrollleft of null 他们是该页面中的 1 个输入字段 我可以输入值 因为只有按钮单击不起作用 此点击在 Firefox 中运行
  • 使用从 Azure AD 和 ADAL 获取的令牌访问本地 SharePoint

    The Goal 使用 OAuth 从基于 Apache Cordova 的移动应用程序通过 REST 请求访问本地 SharePoint 数据 到目前为止我已经尝试过的 1 Azure 移动服务 混合连接 AAD ADAL 与博文类似代表
  • Qt 中的测试用例在哪里?

    我已经阅读了 Qtestlib 手册和教程 并逐步了解了开发测试的过程 如果我是对的 Qt 已经开发了一些测试用例来测试其功能 谁能告诉我Qt源代码树中这些代码在哪里 如果我必须修改它们 测试用例 我可以这样做吗 提前致谢 尼夫 单元测试不
  • 使用 Hilt 注入 CoroutineWorker:无法实例化woker

    有人问过同样的问题 但它们对我不起作用 一开始我使用的是最新版本的工作管理器 即 2 7 alpha 3 但我降级了 因为它只兼容 android 12 预览版 sdk 错误仍然存 在 它无法实例化工作人员 因为这些依赖项包含在工作人员的构
  • 将 label 标签包裹在表单项周围还是使用 HTML 中的“for”属性更好?

    我知道您可以同时使用两者 但是使用其中一个比使用另一个更好吗 如果是这样 为什么 for 属性的示例
  • 如何使用 msdeploy 并定位特定站点?

    使用 msdeploy 和 msdeploy axd 处理程序时 任何部署到远程服务器的尝试都会遇到 401 未经授权的错误 并且服务器会记录日志 IISWMSVC AUTHORIZATION SERVER NOT ALLOWED 仅允许
  • Python:导入与函数同名的模块

    背景知识 第一次问SE问题 我对 Python 还很陌生 一般来说编程经验也不是很多 我四处搜寻 但没有找到这个问题的答案 非常感谢您的帮助 我的问题是 如何导入与函数同名的模块 具体来说 我正在使用 Python 符号数学库 sympy