如何强制setup.py解压缩模块文件?

时间:2017-06-29 11:22:21

标签: python installation setuptools setup.py

Python版本: 2.7.12

我创建了自己的Python模块。这是一个简单的结构,我想在sys.path指向的目录中精确地再现

|-- setup.py
|-- mynamespace/
|   |-- __init__.py
|   |-- mymodule/
|   |   |-- __init__.py
|   |   |-- mymodule.py

因为它是一个简单的项目,setup.py包含列表:

py_modules = ['mynamespace.mymodule.mymodule']

我可以安装模块输入:

$ sudo python setup.py install

我注意到 setuptools 在安装过程中打印出路径。当我去那里时,我可以看到mymodule-*.egg文件。多亏了他,我可以从任何本地化加载我的模块。但.egg文件类似于存档(当我将其扩展名更改为.zip时,我可以解压缩文件并查找目录结构)。我知道该文件带来了跨平台兼容性解决方案。

我认为拥有解压缩的目录是更好的解决方案。在不久的将来,我会在mynamespace目录中发布另一个模块:

>>> from mynamespace import mymodule
>>> from mynamespace import mymodule1
>>> from mynamespace import mymodule2
...

我知道bash我可以编写自己的安装脚本。我甚至可以使用Python来做到这一点,但我认为更专业的方法是使用专用工具。

1 个答案:

答案 0 :(得分:1)

您应该调查namespace packaging。我认为它会满足您的需求。 Python Packaging Authority上的文档解释了部署模块,包和命名空间包的各种方法。

Python包管理非常复杂且非常灵活,所以我绝对不建议您自己安装机制。我还建议使用最简单的方法。就个人而言,我使用了namespace packagesindividual modulespackages。我得出结论,使用简单的扁平包装是最可靠的机制。他们还遵循Zen of Python中的“简单优于复杂”和“扁平优于嵌套”原则。