python的神奇功能二、源码打包
2022/2/2 11:12:37
本文主要是介绍python的神奇功能二、源码打包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」
源码打包~wheel方式
python的wheel介绍
wheel是python中的一个打包方式,它可以为你软件的依赖库或依赖软件提供打包,它打包的依赖包可以在每次使用都可以很方便的安装而不需要再次编译。
wheel的官方文档是wheel.readthedocs.io/en/latest/。
在它的使用过程中,有2个限制的地方: 1.提供给“setuptools”中的“bdist_wheel”命令的实现必须是“setuptools”的拓展 (A setuptools extension for building wheels that provides the bdist_wheel setuptools command) 2.这个打包命令只能在命令窗口中运行。 (A command line tool for working with wheel files)
setuptools官方文档setuptools.readthedocs.io/en/latest/.
wheel命令的相关帮助信息
(pkg) michaelkoo@MacBook much % wheel usage: wheel [-h] {unpack,pack,convert,version,help} ... positional arguments: {unpack,pack,convert,version,help} commands unpack Unpack wheel pack Repack wheel convert Convert egg or wininst to wheel version Print version and exit help Show this help optional arguments: -h, --help show this help message and exit
python 的wheel打包方式
整理源码为python模块
- 新建源码koo.py,在koo.py添加以下内容:
def ko(): print('it is ko invoke') def mm(): print('it is mm invoke') name = 'mm ko'
- 在源码目录中,除了源码之外,还需要有setup.py文件,在setup.py文件中输入配置信息:
from setuptools import setup setup(name='KaKaHelper',version='1.0.1',py_modules=['koo'],description='A helper for KaKa',author='KaKa',author_email='jjkchen@foxmail.com',license='MIT',keywords='ka helper',install_requires=['scapy>=2.4.4','psutil>=5.8.0'],python_requires='>=3'),
- setup.py参数参考
name : 打包起来的包的文件名 version : 版本号,添加为打包文件的后缀名 author : 作者 author_email : 作者的邮箱 py_modules : 打包的.py文件 packages: 打包的python文件夹 include_package_data : 项目里会有一些非py文件,比如html和js等,这时候就要靠include_package_data 和 package_data 来指定了。package_data:一般写成{‘your_package_name': [“files”]}, include_package_data还没完,还需要修改MANIFEST.in文件.MANIFEST.in文件的语法为: include xxx/xxx/xxx/.ini/(所有以.ini结尾的文件,也可以直接指定文件名) license : 支持的开源协议 description : 对项目简短的一个形容 ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。 ext_package : 定义extension的相对路径 requires : 定义依赖哪些模块 provides : 定义可以为哪些模块提供依赖 data_files :指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。
- 输入README.md
# KaKaHelper This is helper for kaka
- 创建__init__.py
在__init__.py中输入以下内容:
from .koo import *
- 当前目录的内容:
README.md __init__.py koo.py setup.py
- 输入配置信息之后,在当前目录中,打开终端输入如下命令生成压缩包文件:
python setup.py sdist
操作成功后,会有如下提示信息:
running sdist running egg_info writing requirements to KaKaHelper.egg-info/requires.txt writing KaKaHelper.egg-info/PKG-INFO writing top-level names to KaKaHelper.egg-info/top_level.txt writing dependency_links to KaKaHelper.egg-info/dependency_links.txt reading manifest file 'KaKaHelper.egg-info/SOURCES.txt' writing manifest file 'KaKaHelper.egg-info/SOURCES.txt' running check warning: check: missing required meta-data: url creating KaKaHelper-1.0.1 creating KaKaHelper-1.0.1/KaKaHelper.egg-info copying files to KaKaHelper-1.0.1... copying README.md -> KaKaHelper-1.0.1 copying koo.py -> KaKaHelper-1.0.1 copying setup.py -> KaKaHelper-1.0.1 copying KaKaHelper.egg-info/PKG-INFO -> KaKaHelper-1.0.1/KaKaHelper.egg-info copying KaKaHelper.egg-info/SOURCES.txt -> KaKaHelper-1.0.1/KaKaHelper.egg-info copying KaKaHelper.egg-info/dependency_links.txt -> KaKaHelper-1.0.1/KaKaHelper.egg-info copying KaKaHelper.egg-info/requires.txt -> KaKaHelper-1.0.1/KaKaHelper.egg-info copying KaKaHelper.egg-info/top_level.txt -> KaKaHelper-1.0.1/KaKaHelper.egg-info Writing KaKaHelper-1.0.1/setup.cfg creating dist Creating tar archive removing 'KaKaHelper-1.0.1' (and everything under it)
当前目录下,也会生成dist目录,在dist中包含有以下内容:
(pkg) michaelkoo@MacBook kaka % ls dist KaKaHelper-1.0.1.tar.gz
截止到目前为止,以【源代码发布包】的形式已打包完成。
- 使用如下命令创建wheel安装包
python setup.py bdist_wheel
运行结果如下:
running bdist_wheel running build running build_py creating build creating build/lib copying koo.py -> build/lib installing to build/bdist.macosx-10.15-x86_64/wheel running install running install_lib creating build/bdist.macosx-10.15-x86_64 creating build/bdist.macosx-10.15-x86_64/wheel copying build/lib/koo.py -> build/bdist.macosx-10.15-x86_64/wheel running install_egg_info running egg_info writing requirements to KaKaHelper.egg-info/requires.txt writing KaKaHelper.egg-info/PKG-INFO writing top-level names to KaKaHelper.egg-info/top_level.txt writing dependency_links to KaKaHelper.egg-info/dependency_links.txt reading manifest file 'KaKaHelper.egg-info/SOURCES.txt' writing manifest file 'KaKaHelper.egg-info/SOURCES.txt' Copying KaKaHelper.egg-info to build/bdist.macosx-10.15-x86_64/wheel/KaKaHelper-1.0.1-py2.7.egg-info running install_scripts creating build/bdist.macosx-10.15-x86_64/wheel/KaKaHelper-1.0.1.dist-info/WHEEL creating 'dist/KaKaHelper-1.0.1-py2-none-any.whl' and adding 'build/bdist.macosx-10.15-x86_64/wheel' to it adding 'koo.py' adding 'KaKaHelper-1.0.1.dist-info/METADATA' adding 'KaKaHelper-1.0.1.dist-info/WHEEL' adding 'KaKaHelper-1.0.1.dist-info/top_level.txt' adding 'KaKaHelper-1.0.1.dist-info/RECORD' removing build/bdist.macosx-10.15-x86_64/wheel
现在在dist中就已经有了whl安装包:
michaelkoo@MacBook kaka % ls dist KaKaHelper-1.0.1-py3-none-any.whl KaKaHelper-1.0.1.tar.gz
python 的wheel安装方式
按照以上步骤,我们生成好了wheel安装包,那我们现在来安装:
- 首先找到whl目录
- 然后检查下,当前环境有没有安装【KaKaHelper】
(pkg) michaelkoo@MacBook kaka % pip list Package Version ---------- ------- pip 21.0.1 psutil 5.8.0 scapy 2.4.4 setuptools 53.1.0 wheel 0.36.2
从以上输出可知,当前环境中没有安装KaKaHelper
- 使用如下命令进行安装:
pip install --no-index KaKaHelper-1.0.1-py2-none-any.whl
安装结果如下:
Processing ./KaKaHelper-1.0.1-py3-none-any.whl Requirement already satisfied: scapy>=2.4.4 in /Users/michaelkoo/work/env/pkg/lib/python3.7/site-packages (from KaKaHelper==1.0.1) (2.4.4) Requirement already satisfied: psutil>=5.8.0 in /Users/michaelkoo/work/env/pkg/lib/python3.7/site-packages (from KaKaHelper==1.0.1) (5.8.0) Installing collected packages: KaKaHelper Successfully installed KaKaHelper-1.0.1
- 再次查看当前环境的库安装情况:
(pkg) michaelkoo@MacBook kaka % pip list Package Version ---------- ------- KaKaHelper 1.0.1 pip 21.0.1 psutil 5.8.0 scapy 2.4.4 setuptools 53.1.0 wheel 0.36.2
可以看到已经安装好【KaKaHelper 1.0.1】
验证安装情况
新建test.py来验证安装情况,在test.py文件中输入以下内容:
from koo import * ko() print(name)
运行结果如下:
(pkg) michaelkoo@MacBook pkg % python test.py it is ko invoke mm ko
至此已完成wheel从打包到安装,再到使用得环节。
常规错误提示
ERROR:is not support
ERROR: KaKaHelper-1.0.1-py2-none-any.whl is not a supported wheel on this platform.
解答方案:
默认情况下,python环境是2.x,在我当前环境中是python3.x,所以这个安装不适合我当前环境,另外在安装的名称中【py2】也表明了环境,如果需要指定python环境,可以在setup.py文件中使用【python_requires='>=3'】
这篇关于python的神奇功能二、源码打包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门