IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 2021-09-02 -> 正文阅读

[Python知识库]2021-09-02

上篇文章讲述了python打whl方法,本篇文章主讲python打rpm包
修改:
1、以MANIFEST.in、setup.cfg替换build.py,位置处于项目根目录
2、以scripts文件夹代替install_monitor.sh文件,位置处于项目根目录

  • setup.cfg
# name/version与setup.py中一致
[metadata]
name=monitor
version=1.0.0
author=libai
author_email=libai@github.com
url=http://github.com/libai/test-project-python
license=Proprietary
description=Demo project in python
long_description=file:README.md
long_description_content_type=text/markdown

[options]
python_requires = >=3.7*
packages=
install_requires=
	geopy
	geographiclib
	numpy
	pandas
setup_requires=
	pip
	wheel
	Cython
	twine
tests_require=
	pylint
	pytest

[bdist_rpm]
requires=依赖其它软件包名
vendor=Li Bai <libai@github.com>
build_script=scripts/rpm_build.spec
install_script=scripts/rpm_install.spec
post_install=scripts/rpm_postin.spec
post_uninstall=scripts/rpm_postun.spec


  • MANIFEST.in
include README.md
include *.conf
include *.yaml
include entry.py
include setup.py
include setup.cfg
include requirements.txt
include MANIFEST.in
recursive-include monitor *.py
recursive-include scripts *.*
  • scripts文件夹

    • rpm_build.spec
    • rpm_install.spec
    • rpm_postin.spec
    • rpm_postun.spec
  • rpm_build.spec

# variables
%define project_libs %{_builddir}/../../../../libs/linux
# build wheelpackage
python3.7 -m pip install --no-cache-dir --no-index --find-links %{project_libs} -r requirements.txt
python3.7 setup.py bdist_wheel

# build private venv
python3.7 -m venv venv

  • rpm_install.spec
# variables
%define project_libs %{_builddir}/../../../../libs/linux
%define release_home %{_buildroot}/opt/%{name}/%{name}-%{version}
%define release_libs %{_buildroot}/opt/%{name}/%{name}-%{version}/libs/linux

# home entries
mkdir -p %{release_home}
install -D entry.py %{release_home}/entry.py

# log entries
mkdir -p %{release_home}/log
touch %{release_home}/log/%{name}.log
touch %{release_home}/log/%{name}-e.log

# venv entries (copy to destination, patch, scripts, and cleanup)
export CURRENT_VENV=`pwd`/venv
export RELEASE_VENV=/opt/%{name}/%{name}-%{version}/venv
cp -r venv %{release_home}
find %{release_home}/venv/bin/* -type f | xargs sed -i "s/${CURRENT_VENV//\//\\/}/${RELEASE_VENV//\//\\/}/g"
find %{release_home}/venv -type d -name "__pycache__" -exec rm -r {} +

# libs entries (install to current venv then save wheels to release_libs)
mkdir -p %{release_libs}
venv/bin/python3.7 -m pip install --no-cache-dir --no-index --find-links %{project_libs} -r requirements.txt
venv/bin/python3.7 -m pip install --no-cache-dir --no-index --find-links %{project_libs} dist/*.whl
venv/bin/python3.7 -m pip list --formatfreeze > %{release_home}/requirements.txt
venv/bin/python3.7 -m pip wheel -w %{project_libs} --no-index --find-links %{project_libs} --find-links dist -r %{release_home}/requirements.txt

# supervisor entry
install -D %{name}.conf %{buildroot}/etc/supervisor/conf.d/%{name}.conf

# gather installed files (w/o directories)
(cd %{buildroot} && find . type f -or -type l) | sed "s/\.//" | grep "\S" | sed "s/^/'/;s/$/'/" > INSTALLED_FILES

  • rpm_postin.spec
# install packages
/opt/%{name}/%{name}-%{version}/venv/bin/python3.7 -m pip install --no-cache-dir --no-index --find-links /opt/%{name}/%{name}-%{version}/libs/linux -r /opt/%{name}/%{name}-%{version}/requirements.txt

# update supervisor
/usr/local/bin/supervisorctl update

  • rpm_postun.spec
# cleanup home directory
rm -rf /opt/%{name}/%{name}-%{version}/venv
find /opt/%{name}/%{name}-%{version} -depth -type d -exec rmdir {} + 

# update supervisor
/usr/local/bin/supervisorctl update
  • gitlab-ci.yml
default:
	image:docker镜像仓库

variable:
	PROJECT: 项目名称,与setup.py中name对应
	VERSION: 项目版本,与setup.py中version对应
	RELEASE: 1

before_script:
	-python3.7 -V
	-pip3 config set global.index-url 包的镜像地址,比如豆瓣源、清华源、阿里源
	-pip3 config set global.trusted-host 地址,比如0.0.0.0
	-pip3 config set global.username 用户名,进网站获取包的账户名
	-pip3 config set global.password 密码,进网站获取包的密码
	-pip3 install --no-cache-dir -r requirements.txt

make:
	stage:build
	script:
		- echo "Building wheel package"
		- python3.7 setup.py bdist_wheel

		- echo "Building rpm package"
		- python3.7 setup.py bdist_rpm
	artifacts:
		paths:
			- dist/*.whl
			- dist/$PROJECT-$VERSION-$RELEASE.x86_64.rpm

test:
	stage: test
	script:
		- echo "Running lint project"
		- python3.7 -m pylint --exit-zero $PROJECT
		
		- echo "Running unit project"
		- python3.7 pytest -v --junitxml=report.xml $PROJECT

		- echo "Testing wheel package"
		- pip3 install --no-cache-dir --force-reinstall dist/*.whl
		
		- echo "Testing rpm package"
		- rpm -ivh --nodeps dist/$PROJECT-$VERSION-$RELEASE.x86_64.rpm

	needs:
		-job:make
		artifacts:true
	artifacts:
		when:always
		reports:
			junit:report.xml

save:
	stage: deploy
	script:
		- echo "Releasing wheel package"
		- twine upload --non-interactive --repository-url 上传的包存储地址 dist/*.whl
		
		- echo "Releasing rpm package"
		- curl -u $上面的用户名:上面的密码 --upload-file dist/$PROJECT-$VERSION-$RELEASE.x86_64.rpm 上传的包存储位置/$PROJECT-$VERSION-$RELEASE.x86_64.rpm
		
	needs:
		- job: make
		artifacts: true

		- job: test
	
	rules:
		- if "$CI_COMMIT_REF_NAME == 'dev_test'"
	
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-03 11:50:39  更:2021-09-03 11:53:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:44:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码