我现在有一个名为“peewee”的项目,它由一个python文件组成,皮威.py. 还有一个模块“测试.py“包含单元测试。这太棒了,想要使用这个库的人只需抓取一个文件并运行它。在
我最近想添加一些附加功能,但不确定如何才能使名称空间正确。如果你从我的项目的根来看,它是这样的:
peewee.py
tests.py
我想补充一下:
^{pr2}$这是个棘手的问题。我希望有这样的人使用单一文件仍然可以这样做,但如果你想要额外的,你也可以有他们。我希望临时演员的名字空间是这样的:
^{3}$我的设置.py看起来有点像这样:
setup(
name='peewee',
packages=['extras'],
py_modules=['peewee'],
# ... etc ...
)
但这不太管用。任何帮助将不胜感激!在
设置程序包
正如@ThomasK所说,最简单的方法就是打包。如果您将您的包命名为
peewee
,那么您可以编辑顶层的__init__.py
文件,以允许用户以以前相同的方式继续使用您的包。在首先,包和子文件夹的目录结构:
__init__.py
文件接下来,您需要向顶层
__init__.py
添加几行。在你可以选择一种快速而肮脏的方法,包括:
^{pr2}$这将把
peewee.py
中的所有内容放在包的顶级命名空间中。或者,您可以采用更传统的方法,只显式地导入那些应该位于顶层的方法。在而且,为了向后兼容,可以显式地将模块的
__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
是可选的,子文件夹的名称很重要)安装和使用
之后,如果愿意,您可以将您的包发布到PyPi,或者直接将其分发给用户。他们只需运行:
所有的东西都会提供给他们。在
导入安装后
最后,如果您如前所述在
peewee/__init__.py
文件中执行特定的导入,您的用户仍然可以执行以下操作:但是现在他们也可以使用})等等。而且,正如你在问题中所问的,他们还可以:
import peewee.extras
来获得额外的功能(或者import peewee.extras.foo as foo
或{然后访问
foo
的函数,就像文件在当前目录中一样。在开发包的有用注释
在您的计算机上,您应该运行:
这将像使用
python setup.py install
一样将包安装到您的路径;但是,develop
告诉python每次使用该模块时都要重新检查该文件,这样每次进行更改时,系统都可以立即使用这些更改进行测试。在相关问题 更多 >
编程相关推荐