python - 将模块转换为包时出错

标签 python package

我有一个包含许多简单辅助函数的模块,但它越来越大而且维护起来很乏味。我想把它分成一个简单的包。我的包目录是在 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 文件的维护影响。有什么经验或最佳做法可以分享吗?谢谢。

最佳答案

您还应该从包中导入ab 以便dir 列出它们。如果要在导入包时自动导入包中的模块,在__init__.py中指定,在__init__.py中添加要导入的模块的import语句。/p>

test           # package directory
├── module1.py
├── module2.py
├── __init__.py

要在导入包时导入 module1,__init__.py 必须包含以下内容。

import module1

您可以使用 from test import module2test 包导入模块

编辑:

只要不同的模块服务于不同的目的,最好将所有相关的助手放在它们自己的模块中。导入包时默认要导入的所有模块都应在 __init__.py 文件中指定。其他的可以在需要时导入。即使您多次导入一个模块,它们也不应该有任何性能影响,它们只初始化一次,如发现的那样here .

关于python - 将模块转换为包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36677288/

相关文章:

go - 如何在更改位置时更新导入

deployment - NuGet 不复制配置文件

ruby - 如何在 OSX 10.7 上打包 ruby​​ shoes 应用程序

尽管 Linux 上有 __init.py__ 和正确的 PYTHONPATH,但仍出现 Python ModuleNotFoundError

python - 使用 Anaconda 安装 MySQLdb

python - 你如何使用 pandas.DataFrame 列作为索引、列和值?

jsp - Sublime Text 2、jsp隐藏评论快捷方式

python - 当我尝试安装库时如何修复 python 中的 SSL 错误?

python - Pandas 放大多维物体

javascript - 为什么 Flask 会与 Reactjs 一起用于 Restful API?