python生成sdk時,可以打包成.egg(windows下)也可以打包成.whl(linux或者windows下),然后執行pip3 install ***.whl就可以像往常的安裝包一樣使用了。這里先介紹下打包成.egg包作為打包的入門。
對于已經運行過python project的,不需要另外安裝。pip list先查閱。
之類新建一個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")
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()
)
進入到當前目錄下,或者指定對應的執行目錄,執行打包命令
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,可以直接使用解壓文件解壓到當前目錄下
進入Python Console
import MySDK
MySDK.testSdk()
Exercise_sdk simple sdk testSdk
發現windows打包成.egg相對較為容易些,但是因為.egg文件使用范圍有限,因此下文再介紹下打包成.whl文件。
這里所謂的通用是指適用于windows,linux,unix系統的.whl文件包。打包成.whl包和.egg包有所不同。這里需要注意的是,一般情況下,我們只需要打包.py文件即可,但是有時可能需要打包部分非.py的數據,比如Data下一個data.txt文件。對于待打包的文件,在工程目錄下需要有setup.py,setup.cfg(空文件),README.rst(功能同README.md文件),MANIFEST.in文件
python的封裝,
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需要進行如下設置:
include_package_data = True
同時還需要加入MANIFEST.ini文件,對于MANIFEST.in文件中設置如下:
include volcstack-sdk/Data/data1.txt
在當前工程目錄下,執行如下命令:
python setup.py bdist_wheel
python封裝成庫?打包完成后目錄結構如下所示:
如果報錯,則表示當前環境沒有安裝wheel包,需要先進行安裝。安裝完成繼續執行打包命令。
pip install wheel
注意:這里的環境信息決定了打包的sdk所支持的版本要求,我當前的環境是python37,因此完成打包后是不支持python2的,因此如果要無差別支持python2/3,,需要指定打包的參數。
python setup.py bdist_wheel --universal
此時繼續將當前工程下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)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态