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来做到这一点,但我认为更专业的方法是使用专用工具。
您应该研究名称空间包装。我认为它将满足您的需求。Python包装管理局的文档解释了部署模块,软件包和名称空间软件包的各种方法。
Python软件包管理非常复杂且非常灵活,因此我绝对不建议您滚动您自己的安装机制。我还建议您采用最简单的方法。就个人而言,我使用了名称空间软件包,单个模块和软件包。我得出的结论是,使用简单的平面包是最可靠的机制。他们还遵循"简单胜于复杂"。且"平坦比嵌套更好"Python Zen的原理。