写一个自己的python模块
首先:
一个良好的习惯是在具体编码前有一个计划,这个计划可以不是特别细致,但是要大致反映出都包括哪些东西。对于程序员来讲,一个常用的软件项目结构是就能反映出这一点。所以对于构建自己的模块的时候,首先大致应该有这几个文件夹:
下面对他们分别做解释:
build: 这个文件夹是在编译的时候自己生成的,不是自己创建的,暂不考虑
dist: 同上
docs: 这个文件夹主要是存放的当前目录的文档信息,一个优雅的软件(包、模块)是易于使用的,而文档则是快速了解用法的最好东西
nxdictionary: 这里是主要的代码位置,里面存放各种信息
./base: 代码的基本内容,可以自由选择。
./configuration: 配置信息,模块的一些默认信息通常放在这个文件夹下,当然可以灵活配置的信息是最好的。
./exceprion: 代码中可能存在的异常类,主要是集中在这个文件夹下。这里的原则是能够解决的异常就在代码中处理,不能解决的异常(问题)要及时的抛出,以避免问题扩大!同样对于工作中的,也是如此!!!
./script: 这里的是一些常用的脚本,我这里的还加入了一些可用于命令行操作的脚本程序,后面setup.py会提到。
./test: 测试的文件夹,主要是对于模块中的重要代码进行测试,这里我主要是添加了一些单元测试的代码用于测试代码中关键的类,函数
./utils: 一些常用的工具,代码中一些通用的、简单的、不具体属于某个特定类的函数,方法,类等!
./main.py 程序(包)的主要入口,里面定义了一些常用的函数,通常这些函数是可以直接 package_name.function 进行调用的。
script: 外部脚本,与内部脚本只不过是空间不同
LICENSE: 许可证信息,一般都是要填上的
README: 要对使用者说的话,嗯,可以写一首诗吧
requirements: 程序中的所有的依赖信息,可以是用 pip freeze > requirements.txt 生成
setup.cfg: 这里重要是打包时的一些设置,在这里设置了,就不需要在 setup.py 中设置了
setup.py: 和上面的作用相同
接下来:滴滴滴滴,写了很多代码,重要程序中的代码都写完了。。。
然后:进行打包,主要是在 setup.py 中加入一些设置,当然,在 setup.cfg 中加入也是可行的!如下:
# coding=utf8
__author__ = 'Administrator'
from setuptools import setup
from setuptools import find_packages
setup(
name="NXDictionary",
version=0.1,
author="lfc",
author_email="",
description="This is a framework of dictionary, including the addition of word library, query and other functions.",
keywords="dictionary",
packages=find_packages(),
entry_points={
'console_scripts': [
"say_hello=nxdictionary.script.update_db_files:console_print_hello",
"say_hello=nxdictionary.script.update_db_files:ndx_up",
]
},
test_suite="nxdictionary.test", # 指定测试包位置, python setup.py test
# setup_requires="" 指定安装的依赖,同样可以使用pip freeze > requirements.txt 生成依赖
dependency_links=[], # 添加依赖链接
install_requires=[
# 'enum34;python_version<"3.4"',
# 'pywin32 >= 1.0;platform_system=="Windows"', 可基于不同平台指定依赖
]
)
接着:打包
python setup.py sdist # 这里是携带源码的
# 并且会生成相应的压缩文件,安装的时候,pip install it ,或是easy_install it
打包完成后 就会生成相应的内容