平常时经常用pip install xx 去安装第三方包,那怎么制作自己的包呢,也可以通过pip的方式去安装,这两天研究了下,这里记录下,也给大家分享下吧
1.首先要去pypi的官网自己去注册一个账号,然后邮箱验证
但是我邮箱验证了之后,页面上还老是提示下面的东西
PYPI双因素身份验证(2FA)
我就选了一个二维码的,捣鼓了半天才知道怎么用,就是二维码的下面有一串字符可以复制下,通过下面的代码,得到一个6位数字的字符,然后输入到右侧的文本框,提交就行了
前提先 pip install pyotp
import pyotp
totp = pyotp.TOTP('二维码下面的一串字符复制过来')
a=totp.now()
print (a)
发现这个一串字符要记下来,每次登录时,输入用户名和密码后,还要输入下pyotp新生成的六位数字,据说是为了安全性
2.我的目录结构如下图,圈红的是重点,其他可以忽略
__init__.py是空的,lgpdemo.py的代码如下:
import base64
import os
def Base_64(PATH,IMGNAME):
file_path = os.path.join(PATH,IMGNAME) #获取base_dir+'/image'文件夹内的文件
f=open(file_path,'rb') #二进制方式打开图文件
lsReadImage_f=base64.b64encode(f.read())#读取文件内容,转换为base64编码
f.close()#关闭文件
return lsReadImage_f
lgplib.py的代码如下:
import base64
import os
class lgplib():
def Base_64(self,PATH,IMGNAME):
file_path = os.path.join(PATH,IMGNAME) #获取base_dir+'/image'文件夹内的文件
f=open(file_path,'rb') #二进制方式打开图文件
lsReadImage_f=base64.b64encode(f.read())#读取文件内容,转换为base64编码
f.close()#关闭文件
return lsReadImage_f
上面的代码文件随便搞一个就行,我是为了后面的调试练习,写了两个
setup.py的代码如下:
#!/usr/bin/env python
from setuptools import setup, find_packages
setup(
name = 'lgplibdemo',
version = '0.0.3',
description = 'library ',
long_description = 'library ',
author = 'ligaopan',
author_email = 'ligaopan1984@163.com',
url = 'https://github.com/ligaopan/lgp-library',
license = 'MIT Licence',
keywords = 'testing testautomation',
platforms = 'any',
python_requires = '>=3.7.*',
install_requires = [],
package_dir = {'': 'src'},
packages = find_packages('src')
)
setup.py代码里面的name一定要跟程序包src文件下的lgplibdemo一致
上面的一句话说的不正确哈,经测试,setup.py代码里面的name改为其他的也是正常的;只要引用(from)的是src下面的文件名(包名)一致就行 ------2019.11.1,20:40
3. cmd进入到E:\auto1029\lgp-library>目录下,输入下面的内容,回车
python setup.py sdist
回车后会让你输入用户名,然后密码,每次都这么输,如果感觉麻烦,可以在你的用户下建一个.pypirc文件
输入以下内容:
[distutils]
index-servers=pypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = xxxx你的pypi用户名
password = xxxx你的pypi密码
4.接下来,cmd命令行继续输入下面的内容
有个前提:pip install twine
twine upload dist\lgplibdemo-0.0.3.tar.gz
5.然后去pypi官网看看,是否多了刚刚上传的包
6.咱们来测试下,刚刚的包是否能正常安装
pip install -U lgplibdemo
7.咱们再来测试下,安装的包的功能是否正常
from lgplibdemo.lgpdemo import Base_64
from lgplibdemo.lgplib import lgplib
b=Base_64('C:\\Users\\\xxx\\Desktop\\',"9272.jpg")
print(b)
c=lgplib.Base_64('','C:\\Users\\\xxxx\\Desktop\\',"9272.jpg")
print(c)