- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个包含许多简单辅助函数的模块,但它越来越大而且维护起来很乏味。我想把它分成一个简单的包。我的包目录是在 PYTHONPATH 上定义的,如下所示:
test
|--__init__.py <---this is empty
|--a.py
|--b.py
这是以通常的方式导入的(导入测试),但经过检查(dir(test))库不包含模块 a 或 b,仅包含一些顶级属性。我可以提示出了什么问题。谢谢!
下面的解决方案:init 文件现在每次都自动加载我想要访问的模块。这尊重 Python 3.4 固有的绝对路径假设。
from .a import a
from .b import b
跟进:我的意图是将每个帮助程序脚本作为其自己的模块,从而可能导致许多易于查找和维护的小模块。这是惯用语吗?效率低下?我得到了对 init 文件的维护影响。有什么经验或最佳做法可以分享吗?谢谢。
最佳答案
您还应该从包中导入a
和b
以便dir
列出它们。如果要在导入包时自动导入包中的模块,在__init__.py
中指定,在__init__.py
中添加要导入的模块的import语句。/p>
test # package directory
├── module1.py
├── module2.py
├── __init__.py
要在导入包时导入 module1,__init__.py
必须包含以下内容。
import module1
您可以使用 from test import module2
从 test
包导入模块
编辑:
只要不同的模块服务于不同的目的,最好将所有相关的助手放在它们自己的模块中。导入包时默认要导入的所有模块都应在 __init__.py
文件中指定。其他的可以在需要时导入。即使您多次导入一个模块,它们也不应该有任何性能影响,它们只初始化一次,如发现的那样here .
关于python - 将模块转换为包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36677288/
我使用的是 Xcode 8.2.1,我的 swift 版本是 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1) 这是我的 package.swift 内容 imp
utils::install.packages似乎完全有能力安装缺少的依赖项。但是,如果由于某种原因(例如,尝试安装 DiagrammeR 、 Error: package ‘igraph’ was
好吧,第一次尝试编写 R 包,我被卡住了。这是我创建包的方式: package.skeleton("pkg",code_files=some.filenames) roxygenize("okg")
我正在构建一个 Atom 包,并尝试向用户显示项目列表。用户可以搜索这些项目并选择一个。我正在尝试制作一些看起来类似于下面的菜单的东西。 (来源:github-camo.com) 这有点像命令面板,只
我正在尝试使用找到的官方分步页面在 Ubuntu 18.04 上安装 Docker CE 18.03 here .我被困在第 4 步)sudo apt-get update .这就是我得到的: Hit
我们在公司内部针对解决方案设置了 CI。 构建总共花费了大约 13 分钟,这似乎有点太长了。经过一番挖掘,我发现我们没有将 /maxcpucount 开关传递给 msbuild 命令,因此每个项目都是
我正在尝试创建一系列 NuGet 包以在我的组织内本地使用。 我知道我可以创建源代码转换文件(即 MyModel.cs.pp)来帮助添加新源代码文件,即: namespace $rootnamespa
当我加载包含此类的 Monticello 包时,是否有特定的方法会在类中执行? 一个例子: 版本 1, SomeMonticelloPackage-MyName.1.mcz: Object subcl
我正在尝试使用 NuGet 核心创建一个 NuGet 包作为构建过程的一部分。构建过程会创建特定的框架版本 3.5、4.0 和 4.5。如何为每个程序集指定框架版本? public void Crea
这个问题在这里已经有了答案: Failure [INSTALL_FAILED_ALREADY_EXISTS] when I tried to update my application (7 个答案
我最近在 youtube ( https://pub.dev/packages/flutter_bloc ) 上观看了 felix Angelov 的 flutter_bloc 包 (https://
我有两个问题想找出解决方案: 我正在重命名 munin 2.0 包,并且在 RPM 的 SPEC 文件中,我必须废弃原始的 munin 包。 当替换现有的 1.x munin 包作为 munin-no
例如,在尝试安装 R 包时 curl作为 usethis 的依赖项: * installing *source* package ‘curl’ ... ** package ‘curl’ succes
我有一个尝试发送和接收对象的客户端/服务器程序。 一共有三个包:服务器、客户端和共享 shared 只包含 Message 类 我将共享包中的 Message.java 放入与 calcclient
所以我一直在尝试安装一个名为 igraph 的 R 包.最后,当它尝试加载包时,出现以下错误: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15'
我正在尝试安装 Magento 软件包,但我得到No file was uploaded 它来自此代码,因为 $_FILES 是 /downloader/Mged/Controller.php 中的空
我使用的是 Windows,当我想要安装软件包时,出现以下错误: pip install django Requirement already satisfied (use --upgrade to
每当我尝试为 iOS 设置 firebase 时,一切都会正常工作,直到我将“cloud_firestore:”包(或任何其他 FlutterFire 包)添加到 pubspec.yaml 文件夹中。
某些 R 包,例如 mgcv,无法使用 clang 10+ 从源代码编译(在 macOS 10.14 和 R 版本 3.6+ 下)。编译时报错为 ld: unknown option: -platfo
我制作了自己的 cabal 包(我们称之为 package-1),其中包含两个目标,一个库和一个可执行文件。库部分有一个构建依赖列表,而可执行文件有另一个更大的构建依赖列表。 现在我创建了 packa
我是一名优秀的程序员,十分优秀!