python自定义库的打包和安装

        要将自定义库安装到python的三方包地址site-packages中,除了可以直接的复制之外,更为合理科学的方法是通过build和install的方式进行。因为直接复制仅仅作为一种临时的简单的方法,而且只能针对源码进行,也不好进行科学管理,相对的tricky一些,后者才是更为科学合理的工作流。

        通过打包的方式进行,其需要先将原始的自定义库进行build,生成wheel文件或者压缩后的源码文件,然后通过pip直接安装即可。当然这里对库进行打包,需要依赖专门的工具,本文使用的是相对简单的flit工具。

安装flit

        首先如果环境中没有flit,那么需要先安装,其是一个python的三方库,直接pip install flit即可。

初始化

        在build之前,需要先对需要打包的库文件进行初始化,以生成描述库的meta data文件,后续的build依赖于这个文件。具体的方式就是在自定义库的文件夹所在的路径下方运行flit init即可,然后flit会通过交互式的命令行窗口让你补充完一些必要的信息,之后就会在当前目录下生成一个pyproject.toml文件,以及LICENSE许可文件。

        这个时候就需要注意,flit对自定义库所依赖的其他三方库并不会自动感知,因此需要手动添加,直接在pyproject.toml中添加dependencies项即可,如下图所示,haha自定义库依赖numpy,则手动添加依赖项,如果没有指定版本,则安装的时候会安装最新版。如果没有添加依赖项,那么后续安装的时候,虽然可以成功安装项目库,但是并不会安装其依赖项,如果相应的python环境中原本就没有相应的依赖库,会导致安装后的自定义库无法正常运行。

build

        初始化之后,再通过flit build即可打包,执行完该命令之后,默认会在当前路径下生成dist文件夹,里面会有源码打包的tar文件和wheel文件,这两种文件其实只需要其中之一就可,两者的区别在于源码打包文件往往针对需要本地编译的项目,比如自定义库中包含了c扩展,依赖于硬件,需要本地编译,那么就需要对源码打包,然后安装的之后再进行本地编译安装;wheel文件一般就是纯python项目,其直接build成平台独立的wheel文件,安装的时候更为高效简单。filt默认会同时生成这两种文件。

        build之后,生成的文件就可以直接面向pip了,当然如果想把build之后的文件上传到pypi,那么可以通过flit publish实现,这个时候该库就会面向全网了,如果不需要publish到pypi,那么就可以直接进行本地安装了。

 安装

        build生成的wheel文件和tar文件,都可以通过pip直接安装。具体地,通过pip install name --find-links=your_wheel_tar_path -i https://pypi.tuna.tsinghua.edu.cn/simple安装即可,当然后面的-i https://pypi.tuna.tsinghua.edu.cn/simple是将默认的pypi服务地址改为国内清华镜像地址,避免网络原因造成其他依赖库的安装缓慢或者网络异常。

        这里build生成的wheel文件或者tar文件可以分享给别人,让别人通过这种方式安装你的库,如果不想直接分享源码,可以把这个wheel文件发给别人(当然如果愿意,别人也有办法解析出源码),然后通过这种方式安装。这里需要说明的一点是,如果是本地安装,可以省去build过程,直接初始化之后,通过pip install your_project_path -i https://pypi.tuna.tsinghua.edu.cn/simple也可以直接安装,pip会识别路径下的pyproject.toml文件,安装相应的库和依赖项。

下载

        有时候需要在其他机器上离线安装,那么除了自定义库自身的wheel或者tar文件之外,还需下载所有的依赖库,这个时候,可以通过pip download your_project_path -d your_project_path/dist -i https://pypi.tuna.tsinghua.edu.cn/simple命令,将依赖的所有库下载到项目打包文件一起,此时dist文件夹下的文件就可以满足其他机器的离线安装了,只需要在pip安装时,指定--find-links的路径即可。

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值