发布pip项目(包含静态文件)遇到的坑
参考文档
https://packaging.python.org/guides/using-manifest-in/《官方文档》
https://segmentfault.com/a/1190000008663126 betacat《发布你自己的轮子 - PyPI打包上传实践》
https://mp.weixin.qq.com/s/D3aCyUeXdOpIZbQImVwPYg 清风python《花了两天,终于把 Python 的 setup.py 给整明白了》
步骤1 创建并配置setup.py 和MANIFEST.in
设置setup.py 如果想把模块当成工具,那么需要用entry_points定义命令行窗口启动模块的入口
from setuptools import setup, find_packagessetup(name="UIMonkey2077",version="0.2.3",keywords=["pip", "UIMonkey", "python", "layUI"],description="uimonkey tool",long_description="uimonkey tool",license="MIT",url="https://github.com/TangSir61/UIMonkey2021.git",author="TangSir61",author_email="zzzsjztz@qq.com",# packages=find_packages(), # 这个参数是导入目录下的所有__init__.py包packages=['UIMonkey2077'],#这里一定一定要把自己的所有包放在setup。py文件的同级目录下,比如UIMonkey2077,不能写成['utils','services'....],这样会在site-package目录下生成分散的目录include_package_data=True,platforms="any",# install_requires=['uiautomator2', 'tornado'],python_requires='>=3.6',zip_safe=True,# 定义命令行窗口 启动模块的入口(把模块当成工具)entry_points={'console_scripts': ['UIMonkey2077 = UIMonkey2077.__main__:main']}
设置MANIFEST.in,global-include * 比较简单,包含所有文件----解决工程内静态文件不能上传的问题
global-include *
步骤2 打包
工程cmd输入python setup.py sdist,会在dist生成一个tar包
C:\Users\tangwenbo6\IdeaProjects\UIMonkey2021>python setup.py sdist
或者使用
python setup.py sdist bdist_wheel ,会在dist生成两个包,一个tar包一个whl包
步骤3 注册pypi账号与上传dist中上一步生成的两个包到testpypi
- 安装 pip install twine 然后在通过命令 twine register dist/mypkg.whl 完成注册
- 上传到pypi :python -m twine upload --repository testpypi dist/*
C:\Users\tangwenbo6\IdeaProjects\UIMonkey2021>python -m twine upload --repository testpypi dist/*
Uploading distributions to https://test.pypi.org/legacy/
Enter your username: tangwenbo6
Enter your password:
Uploading UIMonkey2077-0.1.1.tar.gz1%|▍ | 8.00k/1.38M [00:00<00:49, 29.0kB/s] 8%|
步骤4 下载使用自己的包
pip install -i https://test.pypi.org/simple/ UIMonkey2077
如果是指定版本,可以使用下面的命令
pip install -i https://test.pypi.org/simple/ UIMonkey2077==0.2.0
注意事项
注意:setup中‘<’符号需要去掉
username =
password =注意:命令行 twine不是内部命令时
python -m twine upload --repository testpypi dist/*
上传完成之后 安装报错,再执行一次就好了,可以指定一下版本
ERROR: Could not find a version that satisfies the requirement UIMonkey2077 ERROR: No matching distribution found for UIMonkey2077
为什么在执行setup.py sdist时find_packages不生效
http://www.cocoachina.com/articles/91600如何包含所有静态文件
setup.py文件设置include_package_data=True,
setup.py同级目录创建MANIFEST.in文件 输入global-include * ,保存即可setup配置项中,packages=[‘UIMonkey2077’], #这里一定一定要把自己的所有包放在setup.py文件的同级目录下,比如UIMonkey2077,不能写成[‘utils’,‘services’…],这样会在site-package目录下生成分散的目录,导致不能作为工具使用
setup函数包含的参数解释
–name 包名称------------生成的egg名称
–version (-V) 包版本----生成egg包的版本号
–author 程序的作者------包的制作者名字
–author_email 程序的作者的邮箱地址
–maintainer 维护者
–maintainer_email 维护者的邮箱地址
–url 程序的官网地址
–license 程序的授权信息
–description 程序的简单描述-------程序的概要介绍
–long_description 程序的详细描述—程序的详细描述
–platforms 程序适用的软件平台列表
–classifiers 程序的所属分类列表
–keywords 程序的关键字列表
–packages 需要处理的包目录(包含__init__.py的文件夹)-------和setup.py同一目录下搜索各个含有 init.py的包
–py_modules 需要打包的python文件列表
–download_url 程序的下载地址
–cmdclass
–data_files 打包时需要打包的数据文件,如图片,配置文件等
–scripts 安装时需要执行的脚步列表
–package_dir 告诉setuptools哪些目录下的文件被映射到哪个源码包。一个例子:package_dir = {’’: ‘lib’},表示“root package”中的模块都在lib 目录中。
–requires 定义依赖哪些模块
–provides定义可以为哪些模块提供依赖
–find_packages() 对于简单工程来说,手动增加packages参数很容易,刚刚我们用到了这个函数,它默认在和setup.py同一目录下搜索各个含有 init.py的包。
其实我们可以将包统一放在一个src目录中,另外,这个包内可能还有aaa.txt文件和data数据文件夹。另外,也可以排除一些特定的包
find_packages(exclude=[".tests", “.tests.”, “tests.”, “tests”])
–install_requires = [“requests”] 需要安装的依赖包
–entry_points 动态发现服务和插件
发布pip项目(包含静态文件)遇到的坑相关推荐
- 将 laravel 项目内静态文件,css、js、images 部署到七牛云 CDN
项目升级,打算把 public 目录下的 css.js.image等文件,上传到七牛云,一直想搞来着,今天又想起来,正好 laravel 也从 5.2 升级到了 5.7,接下来把这边一搞,项目就更加优 ...
- 获取项目中静态文件的三种方式
1.this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()+"/***" 2.S ...
- 跟我一起学.NetCore之静态文件处理的那些事
前言 如今前后端分离开发模式如火如荼,开发职责更加分明(当然前后端一起搞的模式也没有完全褪去):而对于每个公司产品实施来说,部署模式会稍有差别,有的会单独将前端文件部署为一个站点,有的会将前端文件和后 ...
- python 打包发布(含静态文件)
pypi账号注册及设置 注册及添加token 首先在 https://pypi.org/ 注册一个账号,然后在 https://pypi.org/manage/account/ 添加一个token 设 ...
- Django静态文件配置
本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...
- 具有完整静态文件(JS、CSS)支持的 ASP.NET Core 3.x 动态可加载插件
从 Github 下载源代码 - 961 KB 介绍 从3.0版开始,ASP.NET Core提供了一种使用Application Parts将应用程序拆分为模块的方法. 一个解决方案可能包含一个We ...
- 各种 django 静态文件的配置总结【待续】
2019独角兽企业重金招聘Python工程师标准>>> 最近在学习django框架的使用,想引用静态css文件,怎么都引用不到,从网搜了好多,大多因为版本问题, 和我现在的使用的da ...
- 来玩Play框架07 静态文件
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Play框架的主要功能是提供动态响应的内容.但一个网络项目中必然有大量的静态内容, ...
- Django学习之十: staticfile 静态文件
目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述 静态文 ...
最新文章
- 力扣(Leetcode)-94. 二叉树的中序遍历
- 210串口控制台-210移植printf不好使
- 【C++】vs无法更新DoDataExchange方法问题解决
- 前端学习(3034):vue+element今日头条管理-markdown补充
- javascript class
- java 中对hashmap进行排序
- wps2019怎么调整字间距_wps2019表格和文字间距太大怎么调整?
- Excel数据分析day1
- 老版本的linux内核中mtd test 出现 mtd_oobtest: error: verify failed at 0xXXXX 问题
- 002java面试笔记——【java基础篇】从团800失败面试总结的java面试题
- mtk9652对比鸿鹄818哪个好
- 笔记本电脑计算机的配置表,笔记本组装配置清单_笔记本电脑配置单及价格
- java pdf 首行缩进_java使用iText生成pdf文档的对齐方式
- 170504_(读书笔记)ST7920驱动12864液晶模块学习
- 数据库错误:1265
- Python_对折多少次超过珠峰
- 学习c++的50条忠告(转自C++百度贴吧)
- 唯晶科技宣布PSVR游戏《揭秘计划》将开源给合作伙伴
- 《淘宝技术这十年》读书笔记 (三). 创造技术TFS和Tair
- 一只前端程序媛的絮絮叨叨
热门文章
- win7锁定计算机自动关机,windows7怎么设置电脑自动关机_win7如何自动关机
- 清华大学出版社大数据可视化技术与应用第六章Tableau实训
- 循环队列(队列头尾相接的顺序存储结构)
- Unity VRAR Unity播放全景视频及优化极点变形twist问题
- 矿大计算机考研上岸分数,2021--2022中国矿业大学动力工程考研上岸心得及分数线报录比...
- 【认知实习】虚拟现实体验
- outlook 加载配置项_如何在Outlook中启用加载项和连接器
- iOS系统越狱研究现状梳理
- Python计算:sympy解数学方程
- 天梯赛题目练习——平面向量加法(附带PTA测试点)