python⽣成dat⽂件_从零开始社区之路,⼿把⼿教你开源⾃⼰
的Python包
要融⼊社区,第⼀步当然是要撰写⼀个⾃⼰的包。整个过程主要分为五步:
项⽬创建
搭建虚拟运⾏环境
编写项⽬代码
编写安装脚本
上传PyPi
GIT 创建项⽬
创建项⽬,确定项⽬名称,description, license等:
搭建虚拟环境
我们在搭建⾃⼰的库的时候,是希望有⼀个⼲净的项⽬环境的,这时候virtualenv就很有⽤了,采⽤ virtualev 搭建虚拟环境,可以⽅便为后⾯⽣成私有项⽬的 依赖包⽂件。
创建虚拟环境
virtualev venv
启⽤ virtualev :
source venv/Script/activate
构建项⽬代码
简单,快速构建框架原型和⾻架,记得包之间需要 __init__.py ⽂件,后⾯在编写setup.py也会很有⽤。 项⽬结构:
构建好架构后,可以开始编写单元测试代码,pytest是个简单易⽤的库,可以帮助我们快速完成单元测试构建。
构建安装脚本,编写 setup.py ⽂件
完成代码构建和测试就可以开始进⼊构建安装包环节。 Python三⽅库安装常⽤的主要有两种模式:⼀种是直接从 github 上 clone 下来⽤setup.py 安装,另⼀种是⽤ pip install 来安装。两种安装⽅法都是需要编写 setup.py ⽂件的。
对于第⼀种⽅法我们在安装前⼀般还要提供安装的依赖包, 也就是⽂件。在这⾥我们可以直接⽤ pip freeze 命令⽣成:
pip freeze >
因为我们是采⽤新建的虚拟环境开发,所以可以直接把环境中的三⽅库导⼊到 ⽂件中。
构建好 后,就可以编写安装脚本。 这⾥采⽤了setuptools编写安装脚本,Setuptools是⼀个包开发过程库,其增强Python 标准库distutils,使得打包Python项⽬更简单。
setup.py⽂件案例:
from setuptools import Command, find_packages, setup
__lib_name__ = "BaiduMapAPI"
__lib_version__ = "0.1.1"
__description__ = "The Package of Baidu Map, with unofficial"
__url__ = "github/shikanon/BaiduMapAPI"
__author__ = "shikanon"
__author_email__ = "account@shikanon"
__license__ = "MIT"
__keywords__ = ["Baidu", "map"]
__requires__ = ["requests",]
with open("README.rst", "r", encoding="utf-8") as f:
__long_description__ = f.read()
setup(
name = __lib_name__,
version = __lib_version__,
description = __description__,
url = __url__,
author = __author__,
author_email = __author_email__,
license = __license__,
packages = find_packages(exclude=("tests", "exmaple")),
install_requires = __requires__,
zip_safe = False,
include_package_data = True,
data_files = [("BaiduMapAPI/data", ["BaiduMapAPI/data/BaiduMap_"])],
long_description = __long_description__
)
name 包名称 version 版本号 description 包描述 url 包地址 license 授权信息 packages 需要处理的包⽬录,也就是包含__init__.py的⽂件夹 install_requires 需要安装的依赖包 data_files 可以⽤于引⼊⼀些额外的信息⽂件和数据,如图⽚、配置⽂件, [('⽂件要放⼊的⽂件夹1',
要放的位置/⽬录,如果空字符,表⽰放在根⽬录,第⼆个元素['file1',file2']),('⽂件要放⼊的⽂件夹2',['file3',file4'])]第⼀个元素指最后在⽂件要放的位置/⽬录
指原⽂件所在的位置。long_description 包的详细描述,后续上传到pypi,可以⽤于显⽰在主页上的描述
find_packages():这个函数会默认在和setup.py同⼀⽬录下搜索各个含有__init__.py的包。 除了通过data_files添加数据包⽂件,还可以find_packages()
通过package_data设置可以被find_packages到添加的⽂件:
packages = find_packages(exclude=("tests", "exmaple")), # 所有包除了tests和exmaple
package_data = {
'': ['*.csv'], # 任何包中含有.csv⽂件,都包含它
'data': ['data/*.dat'], # 包含data包data⽂件夹中的 *.dat⽂件
}
写好setup.py⽂件,可以python setupy install进⾏安装测试。
注册 pypi 并上传⾃⼰的库
编写好安装脚本,就可以上传PyPi,当然,上传前要先看看上⾯是否已经有编写好的相关库了。 如果很幸运没有,那么可以开始上传⾃⼰的包了,这⾥我们采⽤twine协助上传。
⾸先,完成PyPi的账户注册。
在⽤户⽬录下创建.pypirc⽂件, Linux在$HOME创建.pypirc, Windows在%HOMEDRIVE%下创建.pypirc,加⼊:
[distutils]
index-servers =
pypi
pypitest
[pypi]
repository: /legacy/
username: 账户
password: 密码
python怎么读取dat文件[pypitest]
repository: /legacy/
username: 账户
password: 密码
安装twine: pip install twine
创建: python setup.py sdist bdist_wheel
上传PyPi: twine upload dist/*
上传成功后可以运⾏pip install命令测试。
编写⽂档
编写README.md和说明⽂档docs,这⾥我们⽤sphinx库来创建⽂档架构,sphinx是⼀个智能、漂亮的⽂档⽣成⼯具。初始化docs⽂件夹
sphinx-quickstart
编写rst⽂件,运⾏make html即可⽣成html⽂档,
rst⽂档例⼦:
Welcome to BaiduMapAPI's documentation!
=======================================
.. toctree::
:caption: Basic concepts
:hidden:
api
dataset
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
上传github
最后上传到 github,这样⼀个完整的 Python 三⽅包的开源完成了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论