Python-模块编写
目录结构
(ops) [root@zaza-test ~]# tree opsutil/
opsutil
├── README.rst
├── setup.py
├── src
│ ├── ftp.py
│ ├── __init__.py # 可以添加类似内容:from .ftp import Ftp,实现from opsutil import Ftp导入类
│ ├── ip.py
│ ├── log.py
│ ├── rsync.py
│ ├── server.py
└── tests
├── __init__.py
├── results
│ └── __init__.py
└── units
├── __init__.py
└── test_server.py
#setup.py文件如下
from setuptools import setup, find_packages
setup(
name="opsutil", # 影响这个包名称site-packages/opsutil-0.0.1-py2.7.egg
version="0.0.1", # 影响这个包版本site-packages/opsutil-0.0.1-py2.7.egg
author="zaza",
author_email="260458726@qq.com",
url="https://github.com/zazayaya",
license="GPL",
description="ops util",
package_dir={'opsutil': 'src'}, # opsutil-0.0.1-py2.7.egg/opsutil,影响末尾导入模块名称,import这个名称,可以根据需求修改名称
packages=['opsutil'], # opsutil-0.0.1-py2.7.egg/opsutil,影响末尾导入模块名称,import这个名称,可以根据需求修改名称
#packages=find_packages(),
classifiers=[
"Programming Language :: Python",
"Programming Language :: Python :: 2.7",
],
include_package_data = True,
zip_safe=False
)
单元测试
# 或者setup.py标准测试
pip install pytest-runner
# https://docs.pytest.org/en/latest/goodpractices.html#test-discovery
# setup.py
setup(
# ...,
setup_requires=["pytest-runner", ...],
tests_require=["pytest", ...],
# ...,
)
# setup.cfg
[aliases]
test=pytest
# 执行测试
python setup.py test
初始化目录
https://pythonguidecn.readthedocs.io/zh/latest/writing/structure.html#id2
# 项目顶层目录
mkdir opsutil
# 代码目录
# mkdir -pv opsutil/src/opsutil
mkdir -pv opsutil/src/
# 单元测试目录(建议使用pytest)
mkdir -pv opsutil/tests
# 单元测试目录
mkdir -pv opsutil/tests/units
# 功能测试目录
# mkdir -pv opsutil/tests/units
# 管理脚本目录(根据需求)
mkdir -pv opsutil/scripts
# 详细文档目录(根据需求)
mkdir -pv opsutil/docs
# 其它文件
touch opsutil/setup.py
setup.py参考
- http://www.cnblogs.com/UnGeek/p/5922630.html
- https://pythonguidecn.readthedocs.io/zh/latest/writing/structure.html#id2
- http://python.jobbole.com/80912/
- https://audreyr.gitbooks.io/new-library-sprint/content/
- https://python-packaging-user-guide.readthedocs.io/
单元测试
pip install pytest
- 原文作者:zaza
- 原文链接:https://zazayaya.github.io/2019/02/14/python-project-struct.html
- 说明:转载本站文章请标明出处,部分资源来源于网络,如有侵权请及时与我联系!