python封裝api接口,python封裝SDK

 2023-11-18 阅读 32 评论 0

摘要:python生成sdk時,可以打包成.egg(windows下)也可以打包成.whl(linux或者windows下),然后執行pip3 install ***.whl就可以像往常的安裝包一樣使用了。這里先介紹下打包成.egg包作為打包的入門。 1 打包為適用于windows的.egg包 1.1 安裝python-set

python生成sdk時,可以打包成.egg(windows下)也可以打包成.whl(linux或者windows下),然后執行pip3 install ***.whl就可以像往常的安裝包一樣使用了。這里先介紹下打包成.egg包作為打包的入門。

1 打包為適用于windows的.egg包

1.1 安裝python-setuptools

對于已經運行過python project的,不需要另外安裝。pip list先查閱。
在這里插入圖片描述

1.2 新建項目

之類新建一個python工程,volcstack-sdk,新建README.md和setup.py文件。其下新建一個項目為MySDK,再新建一個Exercise_sdk.py文件,這里主要的作用是封裝自己想給他人提供的API,結果如下所示:
在這里插入圖片描述

# __init__.py
from MySDK.Exercise_sdk import testSdk

python封裝api接口,MySDK/init.py 導入API。
MySDK/Exercise_sdk.py可以封裝自己的API

# Exercise_sdk.py
def testSdk():print("Exercise_sdk simple sdk testSdk")

1.3 setup函數

setup.py文件的主要作用是用于提供安裝MySDK包

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# DevVersion: Python3.6.8
# Date: 2020-09-25 09:13
# PyCharm|setupfrom setuptools import (setup, find_packages)REQUIRES = ["certifi>=2020.04.01","python-dateutil>=0.1.0","urllib3>=1.0"
]setup(# 包名name="MySdk",# 版本version="0.1.0",# github地址[我學習的樣例地址]url='https://github.com/snowroll/python-sdk.git',# 包的解釋地址long_description=open('ReadMe.md', encoding='utf-8').read(),setup_requires=REQUIRES,# 需要包含的子包列表packages=find_packages()
)

1.4 完成打包

進入到當前目錄下,或者指定對應的執行目錄,執行打包命令

E:\volcstack-sdk>python setup.py bdist_egg
running bdist_egg
running egg_info
creating MySdk.egg-info
writing MySdk.egg-info\PKG-INFO
writing dependency_links to MySdk.egg-info\dependency_links.txt
writing top-level names to MySdk.egg-info\top_level.txt
writing manifest file 'MySdk.egg-info\SOURCES.txt'
reading manifest file 'MySdk.egg-info\SOURCES.txt'
writing manifest file 'MySdk.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\MySDK
copying MySDK\Exercise_sdk.py -> build\lib\MySDK
copying MySDK\__init__.py -> build\lib\MySDK
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\MySDK
copying build\lib\MySDK\Exercise_sdk.py -> build\bdist.win-amd64\egg\MySDK
copying build\lib\MySDK\__init__.py -> build\bdist.win-amd64\egg\MySDK
byte-compiling build\bdist.win-amd64\egg\MySDK\Exercise_sdk.py to Exercise_sdk.cpython-37.pyc
byte-compiling build\bdist.win-amd64\egg\MySDK\__init__.py to __init__.cpython-37.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying MySdk.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying MySdk.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying MySdk.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying MySdk.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\MySdk-0.1-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)

即可完成MySDK的打包工作。此時當前工程下新增build,dist,MySdk.egg-info三個文件夾。如圖:
在這里插入圖片描述
此時dist下會生成一個***.egg的文件,這個是一個zip包,可以使用

unzip -l dist/MySdk-0.1.0-py3.7.egg

python代碼封裝,既然這里是學習方法,我們將該egg文件復制到 \python37\Lib\site-packages下,既然上面說到是windows下的zip,可以直接使用解壓文件解壓到當前目錄下
在這里插入圖片描述

1.5 使用自定義的sdk

進入Python Console

import MySDK
MySDK.testSdk()
Exercise_sdk simple sdk testSdk

發現windows打包成.egg相對較為容易些,但是因為.egg文件使用范圍有限,因此下文再介紹下打包成.whl文件。

2 打包為通用的.whl包

2.1 文件要求

這里所謂的通用是指適用于windows,linux,unix系統的.whl文件包。打包成.whl包和.egg包有所不同。這里需要注意的是,一般情況下,我們只需要打包.py文件即可,但是有時可能需要打包部分非.py的數據,比如Data下一個data.txt文件。對于待打包的文件,在工程目錄下需要有setup.py,setup.cfg(空文件),README.rst(功能同README.md文件),MANIFEST.in文件

python的封裝,在這里插入圖片描述

2.2 setup函數

import os
import setuptools  # 沒有的直接pip install一下就行了setuptools.setup(name='MySDK',version='1.0',description='A MySDK for python packaging.',  # 一個簡要的介紹而已long_description=open(os.path.join(os.path.dirname(__file__),'README.rst')).read(),packages=setuptools.find_packages(),include_package_data=True,author='xxx',author_email='xxx@gmail.com',
)

配合setup.py需要進行如下設置:

  • README.rst中需要保存一些說明性的語言,可以是包使用方法的demo
  • 因為打包過程一般默認打包.py文件,因此想要打包非py文件,需要在setup.py中加入
include_package_data = True

同時還需要加入MANIFEST.ini文件,對于MANIFEST.in文件中設置如下:

include volcstack-sdk/Data/data1.txt

2.3 完成打包

在當前工程目錄下,執行如下命令:

python setup.py bdist_wheel

python封裝成庫?打包完成后目錄結構如下所示:
在這里插入圖片描述
在這里插入圖片描述
如果報錯,則表示當前環境沒有安裝wheel包,需要先進行安裝。安裝完成繼續執行打包命令。

pip install wheel

注意:這里的環境信息決定了打包的sdk所支持的版本要求,我當前的環境是python37,因此完成打包后是不支持python2的,因此如果要無差別支持python2/3,,需要指定打包的參數。

python setup.py bdist_wheel --universal

2.4 使用自定義的sdk

此時繼續將當前工程下dist下的.whl文件拷貝至\python37\Lib\site-packages下。使用如下命令安裝。這里為了和上類比,還是將該whl文件拷貝到site-package下,當然也可以不用放在該目錄下。

D:\python37\Lib\site-packages>pip install MySDK-1.0-py3-none-any.whl
Processing d:\python37\lib\site-packages\mysdk-1.0-py3-none-any.whl
Installing collected packages: MySDK
Successfully installed MySDK-1.0

引用和章節1.5中一樣。(這里可以將上面的已經存在于site-package下的.egg包先手動刪除)

import MySDK
MySDK.testSdk()
Exercise_sdk simple sdk testSdk

python腳本封裝,參考:
python打包SDK(windows+linux)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/178363.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息