Python私服

在python项目中,需要引入第三方的包,可以通过pip很简单的引入;但是有个问题,公司内部的包,也不能发布到pypi仓库吧,所以搭建自己的私服就很有必要了,下面介绍一下基于PypiServer搭建私服的教程

I. 搭建教程

1. 安装方式

首先确认我们的环境时Centos,python版本为3.7

安装命令比较简单,如下

pip install pypiserver
# 下面指定python包存储的路径
cd ~/
mkdir -p python-repository/packages

上面完成之后,就可以开启私服了

pypi-server -p 8080 -P . -a . ~/python-repository/packages

上面的 -P . -a . 表示我们开启的私服,不要求安全校验,可以直接下载和上传包

2. 安全校验

上面的没有加安全限制,实际场景可能就不太合适了,如果我们要加上用户名/密码限制,可以如下配置

安装 htpasswd

pip install passlib
yum -y install httpd-tools

生成密码文件: 用户名+密码= user/pwd123456

htpasswd -sc htpasswd.txt user

上面执行之后,会提示输入密码,完成之后,就over了

接下来,我们启动私服,需要修改一下启动命令,下面-a list表示上传,下载,查看包都需要校验

pypi-server -P htpasswd.txt -a list -p 8888 ~/python-repository/packages

3. 使用说明

前面的私服算是搭建完成了,接下来就是使用姿势了,对我们而言,需要关注的无非安装和发布两个操作了

发布包

首先设置配置文件,vim ~/.pypirc

[distutils]
index-servers =
  local

[local]
repository: http://127.0.0.1:8888
username: user
password: pwd123456

[install]
trusted-host=https://127.0.0.1:8888

然后需要将setup.py 编写好

from setuptools import setup, find_packages

setup(
   name='my_server_package',
   version='1.1.21',
   packages=find_packages(),
   description="Test",
   long_description="""
   - 1.0.0
       init 
   - 1.0.1
       test
   - 1.0.2
      添加xxx方法
   - 1.0.3
      删除xxx方法
   """,
   author='xl',
   author_email='xl@llzou.com',
   url='https://pypi.ironmanfunds.club/packages/',
   requires=[
       'numpy',
       'pyecharts',
       'pandas',
   ]
)
  • 上方文件的long_description 可以详细记录一些细节信息,方便后续整理
  • 注意版本号是升序的,1.1.2 是要大于1.0.999,如果不按照升序写,它内部会一直打包他认为最大的那个版本,你的更新就不会出现
  • 注意:使用 find_packages 默认只打包.py文件,对于目录是只打包有__init__.py的;如果需要打包额外的数据,比如css、js哪些,需要设置MANIFET.in文件

然后到需要上传的项目下,执行下面的命令即可

python3.7 setup.py sdist upload -r local

安装包

我们通过pip进行包安装,默认是从pypi.org下载包,所以需要额外设置下从私服下包

设置配置文件: vim ~/.pip/pip.conf

[global]
#  这个位置设置下载包的时候从哪个位置获取,这里设置的是阿里源和自己的
trusted-host=mirrors.aliyun.com
                     127.0.0.1:8888 # 这个位置可以跟上面的阿里镜像源一样填写域名,需要自己映射一下
#  设置具体的位置,优先从阿里源获取,如果没有找到会再去自己服务器上找
index-url = http://mirrors.aliyun.com/pypi/simple/

# 将私服的用户名和密码写在url中,就不用每次上传的时候再填入
extra-index-url = http://user:pwd123456@127.0.0.1:8888

其中 extra-index-url 的value 前面是用户名:密码,注意走的是http协议,因此需要在下面配置上信任host

上面配置完毕之后,下载包就可以和之前的操作一样了;
由于我们已经配置了阿里的源,所以下载其他的包也是没有问题的;
无缝衔接

# 会去阿里源上下载,更正常流程一样
pip install request

# 会先从阿里云上查找,找不到会去我们的服务器上查找,找到后会开始下载
pip install my_server_package

查看包列表

可以在浏览器上通过url打开PypiServer的界面,会显示所有历史包的压缩包,可以根据需求下载历史包

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容