python 包管理工具poetry和异步sanic web框架实践+配置镜像源

news2024/12/23 9:54:57

上传源码到服务器,然后执行poetry install安装依赖。

多进程启动脚本run.sh内容:

#!/bin/bash

#应用入口文件
APP_NAME=/www/wwwroot/python-sanic/main.py
#进程关键字
PROCESS_KEYWORD=python-sanic

#使用说明,用来提示输入参数
usage(){
    echo "Usage: sh run.sh [start|stop|restart|status]"
}

#检查程序是否在运行
is_exist(){
    pid=`ps -ef|grep $PROCESS_KEYWORD|grep -v grep|awk '{print $2}'`
    if [ -z "${pid}" ];then
        return 1
    else
        return 0
    fi
}

#启动方法
start(){
    is_exist
    if [ $? -eq 0 ];then
        echo "${APP_NAME} is already running. pid=${pid}"
    else
        poetry run nohup python3 ${APP_NAME} >nohup.out 2>&1 &
    fi    
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    ps -ef|grep $PROCESS_KEYWORD|grep -v grep|awk '{print $2}'|xargs kill -9
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启方法
restart(){
  stop
  sleep 5
  start
}
 
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

/***************************************************************************/

pip 临时使用:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
注意,simple 不能少, 是 https 而不是 http

设为默认

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
配置多个镜像源

如果您想配置多个镜像源平衡负载,可在已经替换 index-url 的情况下通过以下方式继续增加源站:

pip config set global.extra-index-url "<url1> <url2>..."
请自行替换引号内的内容,源地址之间需要有空格

可用的 pypi 源列表(校园网联合镜像站):校园网联合镜像站

PDM
通过如下命令设置默认镜像:

pdm config pypi.url https://pypi.tuna.tsinghua.edu.cn/simple
Poetry
通过以下命令设置默认镜像:

poetry source add --default mirrors https://pypi.tuna.tsinghua.edu.cn/simple/
通过以下命令设置次级镜像:

poetry source add --secondary mirrors https://pypi.tuna.tsinghua.edu.cn/simple/

/************************************************************************/

一、Poetry是什么?

Poetry是一个Python包管理工具,它可以帮助开发者更好地管理Python项目的依赖关系。Poetry可以自动检测和解决依赖关系,确保项目能够正确地运行。

二、安装Poetry

安装Poetry非常简单,只需要在终端中运行以下命令:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -

安装完成后,可以通过运行以下命令来验证是否安装成功:

poetry --version

如果输出了Poetry的版本号,则说明安装成功。

三、创建Python项目

在使用Poetry管理依赖之前,需要先创建一个Python项目。可以通过运行以下命令来创建一个新的Python项目:

poetry new my_project

这会在当前目录中创建一个名为my_project的新项目。接下来,可以使用任何文本编辑器来编辑项目中的文件。

四、添加依赖

添加依赖非常简单,只需要在终端中运行以下命令:

poetry add package_name

其中package_name是要安装的依赖包的名称。Poetry将自动下载并安装依赖包及其依赖项。可以使用以下命令来查看项目的依赖关系:

poetry show

五、安装依赖

在添加依赖之后,需要运行以下命令来安装依赖:

poetry install

这会安装所有依赖项,并将它们安装到项目中的虚拟环境中。在安装依赖之后,可以运行以下命令来启动项目:

poetry run python app.py

六、更新依赖

当依赖包的新版本发布时,可以使用以下命令来更新依赖关系:

poetry update package_name

这会将指定的依赖包更新到最新版本。如果要更新所有依赖项,则可以运行以下命令:

poetry update

/************************************************************************/

poetry 语法格式
 poetry [-h] [-q] [-v [<...>]] [-V] [--ansi] [--no-ansi] [-n] <command> [<arg1>] ... [<argN>]

全局 options
--verbose (-v|vv|vvv):增加消息的详细程度:“-v”表示正常输出,“-vv”表示更详细的输出,“-vvv”表示调试
--help (-h):帮助文档
--quiet (-q):静默模式,不输出任何内容
--ansi:强制 ANSI 输出
--no-ansi:禁用 ANSI 输出
--version (-V):版本号
new
通过创建适合大多数项目的目录结构来启动新的Python项目

poetry new my-package 

my-package 是路径

默认目录结构
my-package
├── pyproject.toml
├── README.rst
├── my_package
│   └── __init__.py
└── tests
    ├── __init__.py
    └── test_my_package.py

自定义项目名称
poetry new my-folder --name my-package

使用 src 目录
poetry new --src my-package

目录结构

my-package
├── pyproject.toml
├── README.rst
├── src
│   └── my_package
│       └── __init__.py
└── tests
    ├── __init__.py
    └── test_my_package.py

init
如果想在已存在的 Python 项目使用 poetry,可以用 init 命令,poetry 会以交互方式创建 pyproject.toml 文件

poetry init 

我是一只回车没有自己输入东西的

options
--name:包的名称
--description:包的描述
--author:包的作者
--python:兼容的 Python 版本
--dependency:需要具有版本约束的包,格式 foo:1.0.0
--dev-dependency:开发需求


生成 pyproject 已有的字段 和 options 是可以对齐的

install
从当前项目读取 pyproject.toml 文件,解析依赖项 [tool.poetry.dependencies] 并安装它们

poetry install

如果当前目录中有 poetry.lock 文件,它将使用其中的确切版本,而不是解析它们,这确保使用库的每个人都将获得相同版本的依赖项
如果没有 poetry.lock 文件,poetry 将在依赖项解析后创建一个
重点
默认会安装 [tool.poetry.dependencies] 和 [tool.poetry.dev-dependencies] 下所有强制安装的(不带 optional)依赖项

--no-dev
不安装开发依赖项 [tool.poetry.dev-dependencies] 

poetry install --no-dev

--remove-untracked
移除 poetry.lock 文件中不再存在的旧依赖项

poetry install --remove-untracked

-E|--extras
指定安装的包

--no-root
不要安装根目录包

update
获取所有依赖项的最新版本并更新 poetry.lock 文件

poetry update

指定依赖项进行更新
poetry update requests toml

options
--dry-run :输出操作,但不执行操作
--no-dev : 不安装开发依赖项
--lock:不执行安装,仅更新 poetry.lock 文件
add
将所需要的包添加到 pyproject.toml 的 [tool.poetry.dependencies] 下面,并安装他们
未指定版本的话,则 poetry 会自动选择合适的版本
poetry add requests pendulum

注意
默认不会将包添加到 [tool.poetry.dev-dependencies] 下,若需要得用 --dev 参数

指定版本
poetry add pendulum@^2.0.5
poetry add "pendulum>=2.0.5"

获取最新的版本
poetry add pendulum@latest

添加 github 依赖项
poetry add git+https://github.com/sdispater/pendulum.git

添加 github 依赖项,指定分支
poetry add git+https://github.com/sdispater/pendulum.git#develop
poetry add git+https://github.com/sdispater/pendulum.git#2.0.5

通过本地目录、文件进行安装
poetry add ./my-package/
poetry add ../my-package/dist/my-package-0.1.0.tar.gz
poetry add ../my-package/dist/my_package-0.1.0.whl

以可编辑模式安装依赖项
在 pyproject.toml 文件指定,意味着本地目录中的更改会直接反映在环境中

[tool.poetry.dependencies]
my-package = {path = "../my/path", develop = true}

options
--dev (-D):将包添加为开发依赖项
--path:指定依赖项的路径
--optional:作为可选依赖项添加
--dry-run:输出操作,不执行任何操作
--lock:不执行安装,仅更新 poetry.lock 文件
remove
从已安装包列表删除指定包

poetry remove pendulum

options
--dev(-D):从开发依赖项中删除包
--dry-run:输出操作,不执行任何操作
show
根据 poetry.lock 列出所有可用的软件包,并不是根据 pyproject.toml 文件的 [tool.poetry.dependencies] 

poetry show

查看某个包的详细信息
poetry show fastapi  

options
--no-dev:不要列出开发依赖项

--tree:树的形式列出依赖项

--latest (-l):显示最新版本

--outdated (-o):显示最新版本,但仅适用于过时的软件包
run
在项目的 virtualenv 中执行指定的命令

poetry run python -V

还可以执行 pyproject.toml 中定义的脚本
[tool.poetry.scripts]
my_script = "my_module:main"

执行

poetry run my_script

shell
显式激活当前虚拟环境,会自动调用虚拟环境下的激活命令

如果不存在虚拟环境,会自动创建一个

check
验证 pyproject.toml 文件的结构,并在出现任何错误时返回详细报告

poetry check

search
在远程库上搜索包

poetry search requests

lock
将所有依赖项锁定为最新的可用兼容版本

poetry lock

version
显示项目的当前版本

是 pyproject.toml 文件的 version 哦

export
将锁文件导出为其他格式

poetry export -f requirements.txt --output requirements.txt

options
--format (-f):要导出的格式(默认值:requirements.txt)目前,仅支持requirements.txt
--output (-o):输出文件的名称,如果省略,则打印到标准输出
--dev(-D):从开发依赖项中删除包
--extras (-E):要包含的额外依赖项集
--without-hashes:从导出的文件中排除散列
--with-credentials:包括用于额外索引的凭据
env
管理虚拟环境,具体教程看:https://www.cnblogs.com/poloyy/p/15270670.html

cache
与 poetry 缓存交互

cache list
列出 poetry 的可用缓存

build
生成源文件

publish
将使用 build 命令生成的包发布到远程存储库

options
--repository (-r):要将包注册到的存储库(默认值:pypi)应与config命令设置的存储库名称匹配
--username (-u):访问存储库的用户名
--password (-p):访问存储库的密码
--dry-run:执行除上传包以外的所有操作

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/921323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

潮玩数藏App:数字时代下的潮流收藏新体验

随着数字时代的到来&#xff0c;潮流收藏成为了一种新型的文化现象&#xff0c;并在年轻人中迅速流行起来。为了满足这一需求&#xff0c;潮玩数藏App应运而生&#xff0c;为用户提供了一个专业、便捷的潮流收藏平台。本文将深入探讨潮玩数藏App的专业性、思考深度以及逻辑性&a…

“爱在七夕,情暖人间”店口志愿者开展敬老助残服务活动

在这个充满爱心的世界里&#xff0c;让志愿服务燃烧我们的人生。 8月22日七夕节&#xff0c;诸暨市爱心助残协会联合牛皋社区党支部、老年协会、店口镇义工协会、店口镇残疾人之家、诸暨凯客蛋糕、诸暨中康医院、杨琼发艺工作室、国芬理发店等爱心团队在店口残疾人之家开展了“…

好用的电容笔有哪些推荐?开学季便宜好用电容笔推荐

开学马上要来了&#xff0c;想必很多学生党都在为开学而做准备&#xff0c;要知道&#xff0c;原装的Apple Pencil&#xff0c;虽然功能很强&#xff0c;但是价格却很贵&#xff0c;不是一般人能够承受得起的。所以&#xff0c;是否也有类似于Apple Pencil这样的电容笔&#xf…

直播app源码,会话描述协议SDP:高质量平台

摘要&#xff1a; SDP协议又称为会话描述协议&#xff0c;在直播app源码平台中&#xff0c;通过定义实时通信参数&#xff0c;管理会话信息和媒体数据&#xff0c;来为用户提供实时通信服务&#xff0c;确保通信的质量与稳定&#xff0c;例如:在直播app源码平台的直播间中&…

每年节约3千万!微信实验平台Iceberg湖仓一体架构改造

# 关注并星标腾讯云开发者 # 每周3 | 谈谈我在腾讯的架构设计经验 # 第4期 | 黄延岩&#xff1a;微信实验平台 - 全面拥抱湖仓时代 微信实验平台简介 微信实验平台主要提供微信内部各个业务场景&#xff08;视频号、直播、搜一搜、公众号等&#xff09;下的各类实验场景的支持&…

苍穹外卖 day1 搭建成功环境

引入 idea找不到打包生成的文件目录怎么办&#xff0c;首先点击这个小齿轮 show ecluded files然后就能找到隐藏的文件 这个jar包内含tomcat&#xff0c;可以直接丢在linux上用 开发环境&#xff1a;开发人员在开发阶段使用的环境&#xff0c;一般外部用户无法访问 测试环…

清华源的链接太多老崩溃,我把它拷过来,需要什么点什么

建议按照字母分个类可能会好点 把链接这里改为 哈哈就不卡了&#xff0c;浏览器也不崩溃了还能很快就链接成功 Links for pandas这是链接 这个小技巧教给大家请给我点个赞

uniapp 实现切换tab锚点定位到指定位置

1.主要使用uniapp scroll-view 组件的scroll-into-view属性实现功能 2.代码如下 <scroll-view:scroll-into-view"intoView"><u-tabsclass"tabs-list"change"tabChange":list"tabList"></u-tabs><view id"1&…

Wireshark流量分析例题

目录 前言 一、题目一(1.pcap) 二、题目二(2.pcap) 三、题目三(3.pcap) 四、题目四(4.pcap) 前言 Wireshark流量包分析对于安全来说是很重要的&#xff0c;我们可以通过Wireshark来诊断网络问题&#xff0c;检测网络攻击、监控网络流量以及捕获恶意软件等等 接下来我们…

pyqt5-自定义停靠栏头部

import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import *class CustomDock(QDockWidget):def __init__(self, title: str, parentNone):super().__init__(title, parent)"""停靠栏的头部"""h_layout Q…

柔性数组详解

柔性数组 1.前言 在c99标准中&#xff1a;允许结构体的最后一个变量是未知大小的数组&#xff0c;这就是柔性数组的来源。 例如&#xff1a; typedef struct type_a{ int i;int a[0];//柔性数组成员 }type_a;有些编译器可能会报错&#xff0c;那就使用下面这一种定义方式&…

数据驱动洞察:各种词频分析技术挖掘热点数据

一、引言 随着信息时代的发展&#xff0c;人们的关注点日益复杂多样。社交媒体、新闻网站和论坛等平台上涌现了大量的信息&#xff0c;这使得热点分析成为了解社会热点话题和舆情动向的重要手段。词频统计是热点分析的基础&#xff0c;本文将分别介绍基于ElasticSearch、基于S…

C++动态规划经典案例解析之合并石子

1. 前言 区间类型问题&#xff0c;指求一个数列中某一段区间的值&#xff0c;包括求和、最值等简单或复杂问题。此类问题也适用于动态规划思想。 如前缀和就是极简单的区间问题。如有如下数组&#xff1a; int nums[]{3,1,7,9,12,78,32,5,10,11,21,32,45,22}现给定区间信息[…

中国区域地表净辐射数据集(1982-2017)

摘要 地表净辐射(Rn) 是陆地生态系统水、热、碳循环过程中的重要参数,准确地估算Rn并分析其时空变化特征对气候变化和能量平衡等研究具有重要意义。本文基于CMFD再分析资料和GLASS地表反照率数据集估算1982~2017年中国区域逐日Rn。本数据集将逐日Rn统计为每月Rn,空间分辨率…

诚迈科技携数智成果亮相南京软博会,交出数实融合圆满答卷

8月20-23日&#xff0c;南京软博会在南京国际博览中心盛大举行。诚迈科技聚焦数字中国建设需求和万物智联时代关键软件技术发展趋势&#xff0c;全方位展示了一系列操作系统产品和数智化解决方案成果&#xff0c;旨在推动数实融合创新。此外&#xff0c;诚迈科技受邀出席中国工…

【业务功能篇74】三高微服务项目springboot-springcloud

三高指的是&#xff1a;高性能、高并发、高可用 2.项目架构 2.1 系统架构图 整体的项目架构图如下 2.2 业务组成 整体的项目业务组成如下

Elasticsearch简介及安装

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

指针与引用详解

博文内容&#xff1a; 指针与引用 指针和引用的区别&#xff1f; 这个问题主要还是仁者见仁&#xff0c;智者见智。 主要就是对于俩者的出现时间来看&#xff0c;对于指针来说&#xff0c;早在C语言那会就已经出现&#xff0c;C是后于C语言的&#xff0c;所以C的出现会多少在使…

美创科技“签”手柠檬文才学堂,共推高校数据安全建设

近日&#xff0c;由柠檬文才学堂联合中国教育在线、东北财经大学网络教育学院共同主办的“三教统筹下高校继续教育数字化转型研讨”顺利召开。 国内高等院校&#xff08;高职院校&#xff09;继续教育分管领导&#xff0c;继续教育学院领导及继续教育信息化、教学教务管理、课程…

❤ 给自己的mac系统上安装java环境

❤ 给自己的mac系统上安装java环境 &#x1f353; 作为前端工程师如何给自己的mac系统上安装java环境 &#x1f34e; 最近因为自己的一些项目需求&#xff0c;mac电脑上需要安装一些后台的java环境&#xff0c;用来跑后台的java程序&#xff0c;于是从一个前端工程师的角度安…