如何打包发布Python包至私有仓库

如何打包发布Python包至私有仓库 Python 中的库(package)可以分为标准库和三方库,标注库是在安装Python后,默认安装的库,如math,json等。其余的库可以称之为三方库,需要在使用前单独安装。我们经常使用到 pip install <package> 这个命令就是用于安装三方库的。这里我们只需要指定包名即可非常简单的实现三方库的安装。那么包存储在什么地方,我们是从何处下载安装的呢? PyPi​ Pip install 命令支持四种来源的安装: PyPI (and other indexes) VCS 本地项目目录 本地/远程 的 archives Python 安装包教程:https://packaging.python.org/tutorials/installing-packages/#installing-packages 首先,我们介绍下什么是PyPi。PyPi 是The Python Package Index 的缩写,是Python社区用来开发和共享软件的一种软件仓库。 一般如果在使用 pip 安装、搜索第三方Python库的时候,默认使用 Pypi源,若是希望使用其余(私有)的源,可以通过 -i/--index-url指定。 -i, --index-url <url> Base URL of the Python Package Index (default https://pypi.org/simple). This should point to a repository compliant with PEP 503 (the simple repository API) or a local directory laid out in the same format. 如经常使用 清华Pypi镜像 加速某些包下载时经常使用如下方式...

如何打包发布Python包至私有仓库

Linux服务器备份和还原:tar命令

tar备份还原 备份 备份脚本 #!/bin/bash # 强制必须传参 if [ $# -eq 0 ]; then echo "Error: Missing parameter one. Usage: $0 <_BACKUP_DIR>, EXIT" exit 1 fi # 设置备份目录 _BACKUP_DIR=$(realpath "$1") # 设置输出文件夹(包含末尾斜杠) DEST_PATH="${_BACKUP_DIR}/$(hostname -I | awk '{print $1}')/" mkdir -p "$DEST_PATH" # 设置输出文件基础名 DEST_BASE_FILENAME=$(basename "$0") set -x # 检查 pv 命令存在并安装 _CMDNAME=pv if ! command -v $_CMDNAME &> /dev/null; then if command -v apt-get &> /dev/null; then apt-get update apt-get install -y $_CMDNAME else echo "Error: $_CMDNAME not found and apt-get can't install....

Linux服务器备份和还原:tar命令

Linux下使用NFS访问群晖文件服务

服务端:群晖 开启NFS服务 文件服务 - NFS权限。服务器名称或IP地址: 192.168.0.1/24 客户端 一条龙命令: #安装nfs服务 yum install nfs-utils -y #显示远程主机共享文件 showmount -e 192.168.x.xx #创建本地目录 mkdir /NFSfile #将远程文件夹挂载到本地目录 mount -t nfs 192.168.1.15:/volume4/Swap /NFSfile -o proto=tcp -o nolock #开启开机挂载 vi /etc/fstab 192.168.x.xx:/volume1/Swap /NFSfile nfs defaults 0 0 安装 apt update apt install nfs-common 查看挂载点 root@debian-11:~# showmount -e 192.168.0.155 Export list for 192.168.0.155: /volume2/HC550_16T 192.168.0.155 /volume1/esxi 192.168.0.8 挂载 注意左下角提示的「装载路径」 使用mount命令: mount -t nfs -o nolock 群晖IP地址:/volume1/video /mnt/挂载路径要先存在 mount -t nfs -o nolock 192....

Linux下使用NFS访问群晖文件服务

SSH应用:ssh隧道

文章来源: https://iguoli.github.io/2018/09/08/OpenSSH-Port-Forwarding.html 以下端口转发命令都可以加上 -f、-N 和 -T 选项,-f 表示让 ssh 进入后台执行命令,-N 表示不执行远程命令,-T 表示不分配终端。 -f Requests ssh to go to background just before command execution. This is useful if ssh is going to ask for passwords or passphrases, but the user wants it in the background. This implies -n. The recommended way to start X11 programs at a remote site is with something like ssh -f host xterm. -N Do not execute a remote command....

SSH应用:ssh隧道

为本地终端设置代理

为本地终端设置代理 前提准备 电脑本机配置好了clash、V2rayU等代理工具,知道socks5、http的代理端口 第一步 #cat ~/.zprofile #在zsh 加载环境变量的时候,先加载一下 bash_profile 也可 source ~/.bash_profile 第二步 适用于:macOS & Linux(Windows下的:MobaXterm、GitBash) #cat ~/.bash_profile #cat ~/.bash_aliases #不起作用,重新登录后不会自动加载 cat >> ~/.bash_profile << EOF #客户端:v2rayN_10808+10809 + NekoBox_2080 + Clash_7890 #socks alias proxy_s5_v2rayN='export ALL_PROXY=socks5://127.0.0.1:10808' alias proxy_s5_neko='export ALL_PROXY=socks5://127.0.0.1:2080' alias proxy_s5_clash='export ALL_PROXY=socks5://127.0.0.1:7890' alias proxy_unset_s5='unset ALL_PROXY' #http alias proxy_http_v2rayN='export proxy_http=http://127.0.0.1:10809;export proxy_https=http://127.0.0.1:10809;' alias proxy_http_neko='export proxy_http=http://127.0.0.1:2081;export proxy_https=http://127.0.0.1:2081;' alias proxy_http_clash='export proxy_http=http://127.0.0.1:7890;export proxy_https=http://127.0.0.1:7890;' alias proxy_unset_http='unset proxy_http proxy_https' EOF source .bash_profile all_proxy 大写形式的代理环境变量,遵循与小写形式相同的语法。 用于设置所有协议共用的代理服务器,覆盖其他代理设置。 SOCKS_PROXY、SOCKS5_PROXY 用于设置 SOCKS 代理服务器。

为本地终端设置代理

MongoDB笔记:基本介绍

MongoDB笔记:基本介绍 简介: MongoDB 是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品。 跟关系型数据库的一些概念对比 SQL术语/概念 MongoDB术语/概念 说明 database database 数据库 table collection 表/集合 row document 行/文档 column field 字段/域 index index 索引 内存管理 MongoDB使用的是内存映射存储引擎,把磁盘文件的一部分或全部内容直接映射到内存,这样文件中的信息位置就会在内存中有对应的地址空间,内存中主要存储索引+热数据,Mongodb没有单独的内存管理机制,跟随当前的操作系统的内存管理。 Python操作Mongodb 主流的操作mongodb模块 pymongo 安装 pip install pymongo 创建连接对象 from pymongo import MongoClient class MongoDBClient(object): def __new__(cls): if not hasattr(cls, 'instance'): cls.instance = super(MongoDBClient, cls).__new__(cls) return cls.instance def __init__(self): self.params = { 'host': 'localhost', 'port': 27017, 'connect': False, 'maxPoolSize': 2000, "authSource": 'workbench', # 验证数据库 "username": 'cnns', # 用户名 "password": '密码' # 密码 } self....

MongoDB笔记:基本介绍

Dockerfile笔记

DockerFile指令 Dockerfile指令包括: Dockerfile 指令 说明 FROM 指定基础镜像,用于后续的指令构建。 MAINTAINER 指定Dockerfile的作者/维护者。(已弃用,推荐使用LABEL指令) LABEL 添加镜像的元数据,使用键值对的形式。 RUN 在构建过程中在镜像中执行命令。 CMD 指定容器创建时的默认命令。(可以被覆盖) ENTRYPOINT 设置容器创建时的主要命令。(不可被覆盖) EXPOSE 声明容器运行时监听的特定网络端口。 ENV 在容器内部设置环境变量。 ADD 将文件、目录或远程URL复制到镜像中。 COPY 将文件或目录复制到镜像中。 VOLUME 为容器创建挂载点或声明卷。 WORKDIR 设置后续指令的工作目录。 USER 指定后续指令的用户上下文。 ARG 定义在构建过程中传递给构建器的变量,可使用 “docker build” 命令设置。 ONBUILD 当该镜像被用作另一个构建过程的基础时,添加触发器。 STOPSIGNAL 设置发送给容器以退出的系统调用信号。 HEALTHCHECK 定义周期性检查容器健康状态的命令。 SHELL 覆盖Docker中默认的shell,用于RUN、CMD和ENTRYPOINT指令。 通过 Dockerfile 中的这些指令,可以构建出一个完整的Docker 镜像。 1 基础指令 1)FROM 格式: FROM <image> FROM <image>:<tag> 解释:FROM是Dockerfile的第一条而且只能是除了首行注释之外的第一条指令。 2)MAINTAINER 格式: MAINTAINER <name> 解释:指定该Dockerfile文件的维护者信息,类似我们在docker commit时候使用-a参数指定的信息。 3)RUN:(构建镜像) 运行命令(安装环境) 解释:执行命令并创建新的镜像层,通常用于安装软件包 格式: RUN <command> (shell 模式) RUN["executable", "param1", "param2"] (exec 模式:注意需要"双引号") shell模式:RUN echo 1 ——/bin/sh -c ‘1 ' 使用 shell 模式时,docker 会以 /bin/sh -c "task command" 的方式执行任务命令。也就是说容器中的 1号进程 不是任务进程而是 bash进程...

Dockerfile笔记

Alembic数据库迁移工具使用

背景 在很多时候,在我们设计好模型之后,又需要进行一定的改变和更新数据操作;最直接的方式就是删除原来的旧表,但我们之前的数据也会删除;究其原因是我们不能精确记住每个修改和对应DDL,这时候就需要数据库迁移框架了。 对于Django ,框架内部就集成了数据库迁移模块,我们可以很方便使用 回顾Django迁移命令: 基本语法: python manage.py xx [app_name] xx如下: migrate,负责应用和撤销迁移。 makemigrations,基于模型的修改创建迁移。 sqlmigrate,展示迁移使用的 SQL 语句。 showmigrations,列出项目的迁移和迁移的状态。 Django迁移过程分为3步走: 1:修改models数据模型 2:生成迁移文件(在migrations/文件夹下)python manage.py makemigrations 3:向数据库执行迁移操作:python manage.py migrate 总结,迁移数据库的主要思路: 1:修改数据模型 2:生成新迁移文件 3:执行迁移 那么在Flask + SQLAlchemy下,如何选择数据库管理迁移工具? Alembic介绍 Alembic是Sqlalchemy的作者就已经实现的一个数据库版本化管理工具: Alembic来帮助我们实现数据库的迁移,数据库迁移工具可以在不破坏数据的情况下更新数据库表的结构。蒸馏器(Alembic)是炼金术士最重要的工具,要学习SQL炼金术(SQLAlchemy),当然要掌握蒸馏器的使用。 Alembic 是一个处理数据库更改的工具,它利用 SQLAlchemy 来实现形成迁移。因为 SQLAlchemy 只会在我们使用时根据 metadata create_all 方法来创建缺少的表 ,它不会根据我们对代码的修改而更新数据库表中的列。它也不会自动帮助我们删除表。 Alembic 提供了一种更新 / 删除表,更改列名和添加新约束的方法。因为 Alembic 使用 SQLAlchemy 执行迁移,它们可用于各种后端数据库。 快速上手 # 安装alembic pip install alembic # 初次使用时,需要初始化,创建迁移环境和 alembic.ini 文件、env.py文件 alembic init migrations # 修改alembic.ini配置,改变 sqlalchemy.url 值,配置数据库连接。 sqlalchemy....

Alembic数据库迁移工具使用

Docker搭建Redis分布式集群 需求: 搭建单机版的redis服务,在应对高并发、稳定性等需求难以胜任。而本次由于项目数据量大,要求稳定性强,能应对高可用,高并发等情况。故搭建redis分布式集群很有必要。考虑到不对物理机造成任何影响,方便管理,本次搭建选择在docker里搭建。 简介 redis分布式集群,由于已经集成了redis哨兵,故具有: 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master; 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用Master代替失效Master。 从而提高了redis服务的稳定性,高可用性等。 工具 redis镜像 Docker Compose 图解 本次搭建是在两台服务器上,最终集群是三主三从,当使用python客户端连接集群后,数据是通过CRC16算法,之后得到结果,将结果与分配的哈希槽值对比,如果在某一个哈希槽范围内,则将该条数据写入到对应的Master上,同时对应的Slave自动备份;当其中一个Master宕机,在指定的时间内没有恢复,则对应的Slave经过哨兵中自动故障迁移(Automatic failover)功能,提升为Master。之后宕机的服务器恢复后自动降级为Slave。 安装 Docker Compose (可以一条命令启动或删除集群) # 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 # 安装(Linux系统) # 常规安装: 1、下载安装包 sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 2、更改权限 sudo chmod +x /usr/local/bin/docker-compose 3、创建软链接 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 4、测试 docker-compose --version # 本次在Linux中下载安装包时,发现慢,掉包严重,下载失败。而直接执行docker-compose时会提示apt install docker-compose。这条命令提示简单,但是安装后发现无法运行YML文件 可以看到,通过apt install docker-compose安装的docker-compose运行命令docker-compose up -d报错。...