首页 > 编程语言 >python打包本地pip包需要注意哪些问题

python打包本地pip包需要注意哪些问题

时间:2023-11-30 17:25:39浏览次数:54  
标签:项目 python gz build pip 打包

  参考资料:

  https://packaging.python.org/tutorials/packaging-projects/

  提到Python的包管理器,大多数人都会想到pip和conda,其中又尤以pip简单好用。那么如果有一天你写了一个有用的项目,想要发布给公众,或者实现方便的安装,那么你可能就会想要自己去打包一个pip包。毕竟,若用户安装你的项目只需要简简单单的pip install XXX命令该多好。

  参考资料是python的官方示例,其中介绍了如何打包一个示例的python package,本人觉得没有必要再重复一遍打包的具体过程(因为不同的项目有不同的情况,多见多参考才能融会贯通),下面会重点说明一些关键问题,如果能解决读者的一些疑惑就最好了。

  1. 我们打包一个软件,最终的目的是什么?产出是什么?

  不妨到pypi官网上看一看一个pip项目里有什么。

 

  答:一个tar.gz包,一个whl包。前者是源代码包,后者是build好的分发。The tar.gz file is a Source Archive whereas the .whl file is a Built Distribution. 

  在我看来,python项目目前的主流setup手段是通过一个叫做setuptools的东西,你可能有一堆有用的代码,或者你有一些已经在特定平台下编译好的二进制文件。那么你需要setuptools来规范地将你的项目安装到python内核中,这类似于一个流水线的过程。pip build负责进行编译(如果需要),打包。pip build之后就会生成whl和tar.gz。然后pip install,将python packages, modules, bin等东西放到你的环境中,好让你的内核找的到。

  2. 我们打包的过程中需要提供什么,注意什么?

  官网的教程中其实说的比较详细了,但是仍需要具体问题具体分析,通常意义来讲,下面这些东西是必须的。

  LICENSE

  打包的指令

  python setup.py sdist bdist_wheel


  2023年11月30日更新!!!

  上面的的资料虽然可能仍然正确,但是目前的一个项目里,setup.py不再是必须的。现在,一个现代化的pip包里面应该包含一个pyproject.toml。具体怎么设置看参考资料即可,项目文件夹组织如下:

标签:项目,python,gz,build,pip,打包
From: https://www.cnblogs.com/chester-cs/p/14499985.html

相关文章

  • 前端优化之路:构建、打包速度提升
    【前言】《闻香识女人》中有句经典台词,“有些人一分钟过尽一生”,多少人在等待中浪费了生命的美好。同样,如果一个项目构建、热更新、打包速度过慢,中途需大把时间去等待,那么不免让人抓狂。 【效果展示】优化前,构建速度 整整126秒,两分多钟过去后,项目才启动成功  优化后,......
  • Python——第四章:函数的递归调用
    递归: 函数自己调用自己递归如果没有任何东西拦截的话.它默认就是一个死循环deffunc()func()func()因此递归调用的时候需要有判断,来退出循环deffunc()ifxxxxx:returnfunc()func()这里就用到了return来充当循环中的break作用。如......
  • 代码随想训练营第四十五天(Python)| 70. 爬楼梯 (进阶)、322. 零钱兑换 、 279.完全平方数
    70.爬楼梯(进阶)1、使用01背包解法classSolution:defclimbStairs(self,n:int)->int:#dp数组代表爬上第i阶有dp[j]种方法dp=[0]*(n+1)dp[0]=1m=2#排列先背包后物品foriinrange(n+1):......
  • Python---GUI----Tkinter
    PythonGUI编程(Tkinter)Python提供了多个图形开发界面的库,几个常用PythonGUI库如下:Tkinter: Tkinter模块(Tk接口)是Python的标准TkGUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里。Tk8.0的后续版本......
  • python的websockets库
    安装pipinstallwebsockets分为客户端和服务端两部分  服务端一般与异步的库一起用因为客户端不可能只服务一个客户所以要用异步处理多个客户 以asyncio示例 fromwebsockets.serverimportserveimportwebsocketsimportasyncioasyncdefstart(ws,path):#......
  • Rust std fs 比 Python 慢!真的吗!?
    作者:XuanwoDatabendLabs成员,数据库研发工程师https://github.com/xuanwo我即将分享一个冗长的故事,从OpenDAL的op.read()开始,以一个意想不到的转折结束。这个过程对我来说非常有启发性,我希望你也能感受到。我会尽力重现这个经历,并附上我一路学到的教训。让我们开始吧!所......
  • python开发之个微群聊机器人开发
    请求URL:http://域名地址/inviteChatRomMember请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识chatRomI是String群userList是String群成员微信id,多个已","分割返回数据:参数名类型说明codestring1......
  • uni-app打包成H5,与PC不适配的问题
    既然是写专门的H5站,那说明希望在pc打开,也是H5的排版,比如一体机上,它是网页打开,但是尺寸是1080*1920,在pages.json配置:这里我配置了1920,是因为网页端还有1920的尺寸最大宽度是配置了1920,超出两边留白,这个我测了一下,似乎有点变形,但是我这边目前只需要适配1080的宽度,所以这一点留给大......
  • python提取图片中文字
    一.安装tesseract-ocr1.1tesseract-ocr下载下载地址:Indexof/tesseract(uni-mannheim.de)1.2完成tesseract-ocr安装,记住安装路径用于配置环境变量1.3配置环境变量将tesseract-ocr的安装路径添加到环境变量的系统变量(PATH)增加一个TESSDATA_PREFIX变量名,变量值还是安装路......
  • 代码随想训练营第四十四天(Python)| 完全背包、518. 零钱兑换 II 、377. 组合总和 Ⅳ
    [完全背包]有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。1、先遍历物品再遍历背包defall_bag(weight,value,bag_weight):dp=[0]*......