一个python文件打包

2024-04-19 01:44:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在有一个名为“peewee”的项目,它由一个python文件组成,皮威.py. 还有一个模块“测试.py“包含单元测试。这太棒了,想要使用这个库的人只需抓取一个文件并运行它。在

我最近想添加一些附加功能,但不确定如何才能使名称空间正确。如果你从我的项目的根来看,它是这样的:

peewee.py
tests.py

我想补充一下:

^{pr2}$

这是个棘手的问题。我希望有这样的人使用单一文件仍然可以这样做,但如果你想要额外的,你也可以有他们。我希望临时演员的名字空间是这样的:

^{3}$

我的设置.py看起来有点像这样:

setup(
    name='peewee',
    packages=['extras'],
    py_modules=['peewee'],
    # ... etc ...
)

但这不太管用。任何帮助将不胜感激!在


Tags: 模块文件项目namepy功能名称setup
1条回答
网友
1楼 · 发布于 2024-04-19 01:44:48

设置程序包

正如@ThomasK所说,最简单的方法就是打包。如果您将您的包命名为peewee,那么您可以编辑顶层的__init__.py文件,以允许用户以以前相同的方式继续使用您的包。在

首先,包和子文件夹的目录结构:

peewee/
    __init__.py
    peewee.py
    extras/
        __init__.py
        foo.py
        bar.py

__init__.py文件

接下来,您需要向顶层__init__.py添加几行。在

你可以选择一种快速而肮脏的方法,包括:

^{pr2}$

这将把peewee.py中的所有内容放在包的顶级命名空间中。或者,您可以采用更传统的方法,只显式地导入那些应该位于顶层的方法。在

from peewee.peewee import funtion1, class1,...

而且,为了向后兼容,可以显式地将模块的__all__属性设置为只包含peewee

__all__ = ['peewee']

这将让人们在需要的时候继续使用from peewee import *。在

正在写入setup.py文件

最后,您还必须设置一些安装脚本等。zedshaw的Learn Python The Hard Way exercise 46有一个简单明了的项目框架,您应该使用它。在

最重要的部分是setup.py文件。示例页面不太长,Zed花了很多精力来制作一本非常棒的书,所以我不打算在这里重新发布(尽管整本书都是免费的)。您也可以阅读writing a setup.py file for distutils的较长的说明/文档,但是LPTHW将为您提供一些可以快速、轻松地完成所有操作的东西。在

总包目录结构

注意,最终的目录结构实际上会更大一些(名称peewee-pkg不重要,bin是可选的,子文件夹的名称很重要)

peewee-pkg/
    setup.py
    bin
    peewee/
        __init__.py
        peewee.py
        extras/
            __init__.py
            foo.py
            bar.py

安装和使用

之后,如果愿意,您可以将您的包发布到PyPi,或者直接将其分发给用户。他们只需运行:

 python setup.py install

所有的东西都会提供给他们。在

导入安装后

最后,如果您如前所述在peewee/__init__.py文件中执行特定的导入,您的用户仍然可以执行以下操作:

from peewee import function1, class1, ...

但是现在他们也可以使用import peewee.extras来获得额外的功能(或者import peewee.extras.foo as foo或{})等等。而且,正如你在问题中所问的,他们还可以:

from pewee.extras import foo

然后访问foo的函数,就像文件在当前目录中一样。在

开发包的有用注释

在您的计算机上,您应该运行:

python setup.py develop

这将像使用python setup.py install一样将包安装到您的路径;但是,develop告诉python每次使用该模块时都要重新检查该文件,这样每次进行更改时,系统都可以立即使用这些更改进行测试。在

相关问题 更多 >