首页 > 编程语言 >python打包成sdk上传到私有仓库和使用

python打包成sdk上传到私有仓库和使用

时间:2023-08-08 14:00:51浏览次数:52  
标签:mypypi repository python poetry module 私有 init sdk


我们已经学习了如何运行一个python项目(当我们有它的源码文件py文件的时候)。

python的使用和运行

我们有一个项目,需要打包到其他机器上运行,如果每次都是复制整个项目源码就显得有点笨拙。

实现这个需求有很多种方案。

例如:
PyInstaller 可参考链接:https://ningyu1.github.io/site/post/59-py2exe-pyinstaller/

我们这里还是使用比较好用的poetry包管理工具来实现 打包和下载运行。

我们已经在学习了poetry的基本介绍

Python依赖管理和打包工具poetry

以及记录如何实现打包、上传和运行

pyproject.toml 示例

[tool.poetry]
name = "qc-module"
version = "1.0.0"
description = ""
authors = ["joe <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.7"
pyhocon = "^0.3.48"


[tool.poetry.dev-dependencies]
pytest = "^3.8"
pytest-cov = "^2.6"
pytest-testdox = "^1.0"

[[tool.poetry.source]]
name = "mypypi"
url = "https://www.mypypi.com/repository/mypypi-group/simple/"


[tool.poetry.scripts]
start = 'qc_module:init'

https://www.mypypi.com/repository/mypypi-group/simple/ 为搭建的pip仓库。

[tool.poetry.scripts]
start = 'qc_module:init'

含义是 在终端使用start命令 会运行qc_module的

__init__.py

文件。
(前提是安装有poetry)

init.py文件内容为

import os
import sys
import time

from qc_module.main import *


def init():
    """
    module的主函数,也是唯一的module入口
    :return:
    """
    print("Start : %s" % time.ctime())
    print("End : %s" % time.ctime())


if __name__ == '__main__':
    init()

打包

python setup.py dist bdist_wheel
或 
poetry build

配置 nexus

在 ~/.pypirc 里配置以下内容

[distutils]
index-servers =
    pypi
    nexus

[pypi]
repository:https://pypi.python.org/pypi
username:your_username
password:your_password


[nexus]
repository=https://www.mypypi.com/repository/mypypi
username=********
password=********

安装 twine

pip install twine

若已有则不用安装

上传

twine upload -r nexus dist/sdk-0.0.1-********.whl

k8s中运行使用

Dockerfile的内容为

FROM python:3.7

WORKDIR /root

COPY dist/*.whl /root/

RUN pip install *.whl
或者
RUN pip install *.whl   -i https://www.mypypi.com/repository/mypypi-group/simple/

RUN pip install poetry

ENTRYPOINT [ "start" ]

linux系统中使用

RUN pip install *.whl

或者

pip install *.whl   -i https://www.mypypi.com/repository/mypypi-group/simple/

pip install poetry

start

这里start命令在windows系统中是关键词

所以也可以用其他的 命名(任意取名)

如下:

[tool.poetry.scripts]
runspider = 'my_package:main'
my-script = 'my_package:main'
start = 'qc_module:init'

运行时直接使用命令

my-script
或者
runspider


标签:mypypi,repository,python,poetry,module,私有,init,sdk
From: https://blog.51cto.com/u_16218512/7008349

相关文章

  • 用python爬虫抓站的一些技巧总结 (转)
    用python爬虫抓站的一些技巧总结zzPython俱乐部您的足迹:»用python爬虫抓站的一些技巧总结zz显示源文件修订记录最近更改索引登录Python俱乐部PythonPythonClub首页Python基础Python常见文件操作Python网络编程Python小技巧Python趣闻Python类小课题我的项目关于本......
  • 遇到的问题--python---IndentationError: unexpected indent
    情况我们在运行python脚本时遇到错误报错IndentationError:unexpectedindent。如下图:原因字母意思就是不希望有缩进,去掉空格和tab。看看我们的代码如下:发现第一行没有顶格写,python对代码的格式要求很严格,python没有分号,用严格的缩进表示上下级从属层级关系,第一行需要顶......
  • 遇到的问题--python---IndentationError:expected an indented block
    情况我们在运行python脚本时遇到错误报错:IndentationError:expectedanindentedblock。如下图:原因字母意思就是希望有缩进,需要增加空格或者tab。我们看看我们的代码如下:python对代码的格式要求很严格,第一行需要顶格写,然后根据冒号:后续的代码行需要有缩进,并且有层级。......
  • 遇到的问题--python---代码格式层级错误导致if判断无效
    情况我们在运行python脚本时没有报错,但是发现if判断没有生效,python的格式很严格,也很深坑。原因if的层级超过了变量赋值语句的层级,所以判断无效。我们看看我们的代码如下:python对代码的格式要求很严格,第一行需要顶格写,然后根据冒号:后续的代码行需要有缩进,并且有层级。同样的......
  • prometheus的sdk client_golang 使用 定时器
    之前线上监控的agent都是直接  time.Sleep(time.Duration(collectInterval)*time.Second),多少有些许的low,每次开始采集数据的时间都是从程序开始执行就开始采集,很显然这种偷懒的方式是不合理的。1、简单复制粘贴一下funcAbNormalLoglistener(collectIntervalint){......
  • python3 apscheduler 任务池 异常错误 /opt/www/taskPools1/venv/lib/python3.8/site-
    报错信息:(venv)root@VM-8-7-ubuntu:/opt/www/taskPools1#pythonmain.pyTraceback(mostrecentcalllast):File"/opt/www/taskPools1/venv/lib/python3.8/site-packages/apscheduler/jobstores/mongodb.py",line86,inadd_jobself.collection.insert_on......
  • python 使用BeautifulSoup的 html5lib爬取网站内容
    1、使用BeautifulSoup的'html5lib'能像网页工具一样渲染内容。缺点:运行比较慢2、安装包pipinstallhtml5lib3、直接获取网页的所有有效内容importrequests#数据请求模块第三方模块pipinstallrequestsfrombs4importBeautifulSoupheads={'User-Agen......
  • 100到python练习题(三)
    编写一个程序,找出一个列表中的最小的两个数。num_list=[10,5,8,2,15,3]sorted_list=sorted(num_list)min_numbers=sorted_list[:2]print("列表中的最小的两个数为:",min_numbers)编写一个程序,计算斐波那契数列的第n项。deffibonacci(n):ifn<=0:......
  • Python 实现解数独 + 数独题 OCR
    说明上班摸鱼的时候无意看到一篇文章:SolvingSudokuwithPoetry'sdependencyresolver,利用Python的依赖解析器来做数独,想起当年自己用MatLab也写过一个做数独的程序,但是需要手动填写数独题目,而且印象里也是非常暴力的算法。因此想要使用更合理的算法来实现解数独,同时尝试......
  • Ubuntu 16.04 安装python3.6正确顺序(解决ssl错误,pip升级)
    0、下载离线python压缩包PythonSourceReleases|Python.org,1、新建root,并进入root权限(sudopasswdroot)(su)2、升级openssl版本wgethttps://www.openssl.org/source/openssl-1.1.0k.tar.gztar-zxvfopenssl-1.1.0k.tar.gzcdopenssl-1.1.0k./configmakeinstall......