在Python中导入包

2023-11-25

我可能错过了一些明显的东西,但无论如何:

当你导入像这样的包时os在 Python 中,您可以立即使用任何子模块/子包。例如这有效:

>>> import os
>>> os.path.abspath(...)

但是,我有自己的包,其结构如下:

FooPackage/
  __init__.py
  foo.py

在这里同样的逻辑不起作用:

>>> import FooPackage
>>> FooPackage.foo
AttributeError: 'module' object has no attribute 'foo'

我究竟做错了什么?


当您导入时FooPackage,Python 搜索 PYTHONPATH 上的目录,直到找到名为FooPackage.py或名为的目录FooPackage包含一个名为__init__.py。但是,找到包目录后,它确实not然后扫描该目录并自动导入所有 .py 文件。

这种行为有两个原因。首先,导入模块会执行 Python 代码,这可能需要时间、内存或产生副作用。所以你可能想导入a.b.c.d不必导入所有大包a。由包装设计者决定是否__init__.py显式导入其模块和子包,以便它们始终可用,或者是否让客户端程序能够选择加载的内容。

第二个有点微妙,也是一个令人震惊的事情。没有明确的导入声明(在FooPackage/__init__.py或者在客户端程序中),Python 不一定知道它应该导入什么名称foo.py作为。在不区分大小写的文件系统(例如在 Windows 中使用)上,这可能表示名为的模块foo, Foo, FOO, fOo, foO, FoO, FOo, or fOO。所有这些都是有效的、不同的 Python 标识符,因此 Python 无法仅从文件中获得足够的信息来了解您的意思。因此,为了在所有系统上表现一致,需要在某处显式导入语句来澄清名称,即使在完整案例信息可用的文件系统上也是如此。

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

在Python中导入包 的相关文章

  • 如何在 Debian 上的 virtualenv 中安装 numpy?

    注 参见这另一篇文章 https stackoverflow com questions 6442754 how to install h5py numpylibhdf5 as non root on a debian linux syst
  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • 通过 python 中的另外两个修改数组[重复]

    这个问题在这里已经有答案了 假设我们有三个一维数组 A 长度为 5 B 长度相同 示例中为5 C 更长 比如长度为 100 C最初用零填充 A给出索引C应更改的元素 它们可能会重复 以及B给出应添加到初始零的值C 例如 如果A 1 3 3
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 来自 pandas 数据帧的烛台图,用日期替换索引

    此代码给出了带有移动平均线的烛台图 但 x 轴位于索引中 我需要 x 轴位于日期中 需要做什么改变 import numpy as np import pandas as pd import matplotlib pyplot as plt
  • 查找正在导入哪些 python 模块

    从应用程序中使用的特定包中查找所有 python 模块的简单方法是什么 sys modules是将模块名称映射到模块的字典 您可以检查其键以查看导入的模块 See http docs python org library sys html
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • Py2exe - Pmw WindowsError:[错误 3]

    我正在尝试使用 Py2exe 构建独立的可执行文件 我已经导入了 Pmw 类 当我运行独立可执行文件时 出现以下错误 Traceback most recent call last File py line 9 in
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • Python:在字典中查找具有唯一值的键?

    我收到一个字典作为输入 并且想要返回一个键列表 其中字典值在该字典的范围内是唯一的 我将用一个例子来澄清 假设我的输入是字典 a 构造如下 a dict a cat 1 a fish 1 a dog 2 lt unique a bat 3
  • Django 2、python 3.4 无法解码 urlsafe_base64_decode(uidb64)

    我正在尝试通过电子邮件激活用户 电子邮件有效 编码有效 我使用了 django1 11 中的方法 该方法运行成功 在 Django 1 11 中 以下内容成功解码为 28 其中 uidb64 b Mjg force text urlsafe
  • 从迭代器外部将 StopIteration 发送到 for 循环

    有几种方法可以打破一些嵌套循环 他们是 1 使用中断 继续 for x in xrange 10 for y in xrange 10 print x y if x y gt 50 break else continue only exec
  • Python 2.7 缩进错误[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题是由拼写错误或无法再重现的问题引起的 虽然类似的问题可能是on topic help on topic在这里 这个问题的解决方式不
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error

随机推荐

  • 内存中 C++ 对象的结构与结构

    如果我有一堂课如下 class Example Class private int x int y public Example Class x 8 y 9 Example Class 和一个结构如下 struct int x int y
  • 如何在Android P上使用apache http

    当我运行我的应用程序时安卓P设备 我收到一些这样的错误 java lang RuntimeException Unable to instantiate application com le android client LeApplica
  • 浮点数学有问题吗?

    考虑以下代码 0 1 0 2 0 3 gt false 0 1 0 2 gt 0 30000000000000004 为什么会出现这些不准确的情况 Binary 浮点数学就是这样 在大多数编程语言中 它基于IEEE 754 标准 问题的关键
  • 在 Angular2 (Typescript) 中实现动态路由 [重复]

    这个问题在这里已经有答案了 RouteConfig 类可用于装饰具有路由功能的组件 RouteConfig 并为该组件定义了某些路由定义 现在 问题是在运行时 动态 注入这些路由定义 原因是 假设我有一个应用程序 其中我必须显示 UI 并定
  • Selenium 元素选择器 - 我认为 xPath 最慢?

    我对一个公共网站进行了一些测试 看看是否可以发现一些不同 Selenium CSS 选择器的性能差异 我运行了一个包含五个节点的集线器 mac chrome local mac safari local mac ff local win7
  • Xcode 4.2 链接错误:libz 问题?

    将项目移至 Xcode 4 2 时 我在 Xcode 4 0 3 中编译和链接正常的项目上遇到了许多 Mach O 链接器未解决的错误 例如 crc32 expf 和 UnwindSjLj Register 我怀疑这可能是 libz 问题
  • CUDA:如何使用 -arch 和 -code 以及 SM 与 COMPUTE

    我仍然不确定在使用 nvcc 构建时如何正确指定代码生成的体系结构 我知道我的二进制文件中嵌入了机器代码和 PTX 代码 并且可以通过控制器开关进行控制 code and arch 或两者的组合使用 gencode 现在 根据this除了两
  • Facebook 应用程序适用于所有浏览器,但不适用于 IE8

    我正在开发一个 Facebook 应用程序 Stragnly 该应用程序在大多数浏览器上运行良好 我在 FF chrome 和 safari 上测试过它 并且在所有浏览器上运行良好 然而 当我在 IE8 上测试时 在尝试对其中一个页面进行
  • 如何获取字符串形式的 JsonCPP 值?

    我正在使用解析 json 数据JsonCpp 我真的不需要理解数据 我只需要打印出一些属性及其值 这在某种程度上很难做到 首先我需要知道该值是什么类型 然后获取该值 然后再次将其转换为字符串 有一个样式编写器 但我不想使用它 因为它在末尾附
  • WebView 到 SizedBox Flutter

    我想将自定义 webview 添加到 flutter 中的 sizedBox 中 我尝试这样做 但出现错误 code override Widget build BuildContext context SystemChrome setEn
  • 棒棒糖上完全透明的状态栏和导航栏

    我正在尝试制作一个安卓启动器 我想实现一个完全透明的状态栏和导航栏 这是我的主题xml文件
  • 当我提前不知道服务器名称和端口时,如何在企业环境中设置 grails.serverURL?

    我们有一个 Grails 2 0 中的应用程序 当我们运行时我们可以使用它localhost 8080 In Config groovy 该应用程序有一个grails serverURL必须为当前主机和当前应用程序名称设置的属性 然而 在我
  • 更改 tomcat 的 catalina.pid 位置

    catalina pid 不在应有的 tomcat bin 文件夹中 并且在 tomcat 启动期间也没有在该文件夹中创建它 问题是我如何 在哪里 重新定义 catalina pid 的路径以强制它在正确的文件夹中创建 提前致谢 根据 to
  • 更改 R 中的临时目录[重复]

    这个问题在这里已经有答案了 我正在使用 Windows 虚拟机 并且在其上安装了 R 和 RStudio 并且我正在尝试更改 R 写入临时文件的目录 当我启动 R 时 我尝试更改临时目录 然后关闭 R 当我重新启动 R 并尝试tempdir
  • 如何在 .Net 中创建 Ntlm Type 1 和 Type 3 消息

    我需要为 NTLM 握手创建类型 1 消息和类型 3 消息 是否有任何 Net API 可以实现这一点 本质上 该应用程序是基于 WPF 的 但使用 Socket 来从服务器传输数据 使用套接字是一项技术要求 但问题是当用户需要使用代理服务
  • Android,删除我的数据目录中的文件?

    我的应用程序在应用程序的数据目录中存储了运行所需的一些文件 data data com example myapp files filehere file 当我的应用程序从市场更新时 清除数据目录中的文件并将它们更新为刚刚下载的新包中的最新
  • CoordinatorLayout 搞乱了 setError 弹出位置

    我面临一个问题EditText setError弹出位置 我使用以下代码来创建布局 活动配置文件 xml
  • >> 和 << 运算符重载

    我刚刚为我的编程课做了一个测验 并答错了这个问题 函数的返回类型 使运算符超载 lt lt 必须是一个 对 ostream 对象的引用 这对我来说似乎根本不对 当然 C 比这更开放 但我想我还是会在这里问 这如何是对的 或错的 当涉及到运算
  • 迭代数组中未定义的方法

    我最近发现 map不迭代未定义的由有洞数组创建 其各个索引已定义的数组 但有些未定义 Holed var array array 0 1 array 2 3 array gt 1 undefined 3 Not Holed var arra
  • 在Python中导入包

    我可能错过了一些明显的东西 但无论如何 当你导入像这样的包时os在 Python 中 您可以立即使用任何子模块 子包 例如这有效 gt gt gt import os gt gt gt os path abspath 但是 我有自己的包 其