【问题标题】:How to create a Python package with multiple directories如何创建具有多个目录的 Python 包
【发布时间】:2020-05-27 12:39:43
【问题描述】:

在下面的链接中有一个类似我的问题:

creating python package with multiple level of folders

但是,在按照问题的答案并尝试了一些我认为可能有效的其他方法之后,我没有成功。

我在这里创建了一个包含许多功能的工作包:

https://github.com/aaronengland/prestige

prestige 目录中有一个 init.py 文件,其中包含一些类和函数。我有一个名为 preprocessing 的类,我可以使用以下方法调用该类中的任何函数:

from prestige import preprocessing as pre

然后(例如):

pre.Binaritizer()

但是,我希望能够使用以下方法导入这些函数:

import prestige.preprocessing as pre

使用第一个链接(上图)我没有成功。我觉得它应该是一个简单的解决方案,但由于某种原因,我无法让它工作。有人可以告诉我如何使这成为可能吗?提前谢谢!

【问题讨论】:

  • preprocessing 类中定义的所有内容都应该移动到一个名为preprocessing.py 的单独文件中或移动到子目录preprocessing 内的__init__.py 文件中,该文件将位于主目录prestige 内源目录。我强烈建议您花时间查看许多开源 Python 项目的文件组织结构,例如 django 或见鬼,scikit-learn,并从中获得一些提示。
  • @metatoaster 我一直在 github.com/aaronengland/prestige_v2 的姐妹包中摆弄那个文件结构,但它还没有为我工作。当我有多个目录时,setup.py 文件中有什么需要更改的吗?
  • 您可能正在寻找有关构建 namespace packages in Python3 的说明。

标签: python github module package


【解决方案1】:

我可以通过如下组织文件结构来解决这个问题:

  • 声望
  • setup.py
  •     init.py
  •     general.py
  •     preprocessing.py

setup.py 已设置as I normally dogeneral.py 包含函数/类,preprocessing.py 包含函数/类. init.py 文件包含 2 行代码:

from .preprocessing import *from .general import *

所以,我没有创建新目录,我只是将我的函数分成单独的 .py 文件并将它们导入到我的 init.py 文件中。

现在,我可以导入函数,例如:

from prestige.preprocessing import Binaritizer

希望这对将来有类似问题的人有所帮助。

包可以访问here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-07-02
    • 1970-01-01
    相关资源
    最近更新 更多