最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用devpi實(shí)現(xiàn)鏡像源代理完整指南

 更新時(shí)間:2025年05月13日 15:30:31   作者:小哈里  
這篇文章主要為大家詳細(xì)介紹了如何使用devpi實(shí)現(xiàn)python鏡像源代理,包括緩存加速,私有倉(cāng)庫(kù)和版本控制,文中的示例代碼講解詳細(xì),有需要的可以了解下

1、背景與目標(biāo)

背景1(訪問(wèn)速度優(yōu)化):

  • 直接用pip安裝包會(huì)訪問(wèn)官方源,在國(guó)內(nèi)速度很慢,通常用pip的清華/阿里云源替代。
  • 但即便如此,這些遠(yuǎn)程pypi源網(wǎng)速也不穩(wěn)定,而且比如pytorch/tensorflow這種幾百兆的大型包,下載仍然費(fèi)時(shí),如果給新人配環(huán)境,還要重復(fù)下載。
  • 這就需要一個(gè)緩存pypi服務(wù)器來(lái)做中轉(zhuǎn),在內(nèi)網(wǎng)中下載緩存包,相當(dāng)于直接拷貝,配環(huán)境速度起飛。

期望:

  • 緩存機(jī)制:內(nèi)置緩存機(jī)制,提升包下載速度,節(jié)省帶寬(優(yōu)化訪問(wèn)速度)。
  • 簡(jiǎn)易配置:通過(guò)簡(jiǎn)單的配置即可快速部署和使用,降低維護(hù)成本(考慮docker部署)。
  • 靈活部署:支持多種部署方式,可單機(jī)使用,也支持多服務(wù)器分布式部署(支持掛載公共對(duì)象存儲(chǔ)、文件存儲(chǔ))。

背景2(私有鏡像包):

  • 私有倉(cāng)庫(kù):期望僅用于內(nèi)網(wǎng),局域網(wǎng)的軟件包。
  • 版本控制:更近于一步的,用戶期望創(chuàng)建和管理私人PyPI服務(wù)器上的索引,實(shí)現(xiàn)包的版本控制。
  • 權(quán)限控制:提供用戶和權(quán)限管理,確保包的安全性。

技術(shù)選型:

常見的緩存代理方案:devpi 緩存代理, Nexus 緩存代理, JFrog Artifactory 緩存代理

Nexus:維護(hù)成本較高,雖然支持py以外的源但是目前用不上

JFrog Artifactory:需要商業(yè)授權(quán),并且維護(hù)成本較高,僅支持集群部署

devpi:因此devpi是目前最合適的方案

pypi-server :官方推薦的一個(gè)服務(wù)器,但主要用做上傳私有包。上傳方便,直接拷貝安裝包到文件夾即可。但目前沒(méi)查到緩存已下載包的方法,使用時(shí)和其他源是并列關(guān)系。

bendersnatch : 功能也很強(qiáng)大,但會(huì)把源鏡像的包全部同步到本地,需要大量存儲(chǔ)空間。

2、devpi-server 服務(wù)端搭建

devpi的組成

需要python>=3.7

使用版本 devpi2.2.0, devpi-client5.2.3, devpi-server==6.4.0

雖然包名叫devpi,但在當(dāng)前版本(devpi-server==6.4.0),功能已經(jīng)被分為客戶端 devpi-client 和服務(wù)端 devpi-server

devpi-client: 直接使用devpi的命令調(diào)用的,專門管理已經(jīng)啟動(dòng)的服務(wù)(index,user等指令)

devpi-server: 加參數(shù)用來(lái)啟動(dòng)服務(wù)器的。只有先啟動(dòng)devpi服務(wù),client才能控制(use指令)

devpi-web: 一個(gè)網(wǎng)頁(yè)版客戶端,和cli版本的功能互相補(bǔ)全(或者說(shuō)兩個(gè)客戶端功能都?xì)垙U)。

網(wǎng)頁(yè)地址和 index_url 相同。網(wǎng)頁(yè)上可以搜索包名,點(diǎn)擊對(duì)應(yīng)版本的安裝包可以直接下載。如果已經(jīng)緩存過(guò),描述中會(huì)顯示文件大小,反之說(shuō)明沒(méi)有本地緩存。

devpi-init: 最新版本下(devpi-server 6.14.0),使用配置文件初始化devpi的方式。

devpi配置:目前還沒(méi)有找到一步到位配置devpi的方法。

首次啟動(dòng)服務(wù)器時(shí),mirror_url不能通過(guò)config文件傳遞給程序,只能用上文方式登陸后再修改。但還好,只需要配置一次。這些配置文件會(huì)存放在server目錄中的數(shù)據(jù)庫(kù)文件。

devpi-server 服務(wù)搭建

# 虛擬環(huán)境
python3 -m venv devpi
source devpi/bin/activate

# 安裝
pip install devpi-server
devpi-server --version # devpi-server 6.14.0
devpi --version # devpi-client 7.2.0

# 初始化
# devpi的配置和緩存安裝包的文件夾。不指定目錄默認(rèn)為~/.devpi/server
# devpi-init  --serverdir=[PATH]
rm -rf ~/.devpi/server
devpi-init --configfile devpi-server.yml 
devpi-server --configfile devpi-server.yml

# 啟動(dòng)服務(wù)
# http://localhost:3141/
devpi-server  --host=[HOST] --port=[PORT] --serverdir=[PATH]
devpi-server

手動(dòng)配置索引

# 切換到指定索引
devpi use http://localhost:3141
lsof -i :3141

# 用戶管理
devpi user -l # 查看用戶列表
devpi login root --password ''    # 默認(rèn)用戶為root 密碼為空
devpi user -m root password=123   # 修改密碼為123
devpi user -c user1 password=123  # 創(chuàng)建新用戶 
devpi login user1 --password=123
devpi logout

# 索引管理
# 第一次啟動(dòng)后,會(huì)自動(dòng)從python官方源下載索引
# 每個(gè)用戶可以創(chuàng)建多個(gè)index,index直接還可以繼承,默認(rèn)為root/pypi
devpi upload --index user1/thu # 上傳包
devpi index -c user1/thu bases=root/pypi  #  創(chuàng)建索引
devpi use user1/thu  # 使用索引
devpi index root/pypi  # 查看索引配置
# http://localhost:3141/root/pypi:
#   type=mirror
#   volatile=False
#   mirror_url=https://mirrors.aliyun.com/pypi/simple/
#   mirror_web_url_fmt=https://mirrors.aliyun.com/pypi/simple/{name}/
#   title=PyPI

索引鏡像源切換

# 切換鏡像源地址=>阿里云
# 同步完成后,會(huì)刪除舊索引,索引都在indices文件夾中
# 網(wǎng)頁(yè)地址:http://localhost:3141/root/pypi  ,或者看 devpi-server 的日志
devpi login root --password ''
devpi index root/pypi "mirror_web_url_fmt=https://mirrors.aliyun.com/pypi/simple/{name}/" "mirror_url=https://mirrors.aliyun.com/pypi/simple/"
devpi index root/pypi "mirror_web_url_fmt=https://pypi.tuna.tsinghua.edu.cn/simple/{name}/" "mirror_url=https://pypi.tuna.tsinghua.edu.cn/simple/"

# 嘗試切換多個(gè)源
devpi index --delete root/thu
devpi index -c root/thu 
devpi index root/thu "mirror_web_url_fmt=https://pypi.tuna.tsinghua.edu.cn/simple/{name}/" "mirror_url=https://pypi.tuna.tsinghua.edu.cn/simple/"

上傳私有包

devpi 的 index有兩種類型,mirror 和 stage,前者就是默認(rèn)使用的,拉取遠(yuǎn)程鏡像,但不能傳文件到這個(gè) index中。

這時(shí)需要?jiǎng)?chuàng)建新的 index,指定 stage 類型。然后 devpi use 這個(gè) index,再 devpi upload 本地包。(更多的操作例如本地發(fā)布包,也有對(duì)應(yīng)的指令)

當(dāng)我下載時(shí),devpi 會(huì)先搜索上傳的包,如果沒(méi)有找到依然能通過(guò) mirror 的 index 來(lái)下載,則可以修改 bases,指向 root/pypi,這樣就串聯(lián)起來(lái)了。

可能的dockerfile

# 使用官方的帶有Python的Ubuntu鏡像
FROM python:3.9-slim

# 設(shè)置工作目錄
WORKDIR /root/

# 安裝 supervisor 和 devpi 相關(guān)包
RUN pip install supervisor
RUN mkdir /devpi
RUN pip install devpi-server devpi-web devpi-lockdown \
  && devpi-init \
  && devpi-gen-config --host 0.0.0.0 --port 3141

# 安裝 Nginx
RUN apt-get update \
  && apt-get install -y nginx

# 復(fù)制 Nginx 配置文件和啟動(dòng)腳本
COPY ./nginx-devpi.conf /etc/nginx/sites-enabled/default
COPY ./run.sh /root/

# 暴露 devpi 和 Nginx 的端口
EXPOSE 3141
EXPOSE 80

# 設(shè)置啟動(dòng)腳本
ENTRYPOINT ["bash", "run.sh"]

3、devpi 鏡像源使用

pip config 配置,和使用阿里云/清華源一樣

1、臨時(shí)使用

在pip install后添加 index_url 和 trusted_host

# 語(yǔ)法
pip install requests -i 鏡像URL --trusted-host 信任的域名
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn

# 可選源
清華:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
豆瓣:https://pypi.doubanio.com/simple/

# devpi
pip install -i "http://[host]/root/dev/+simple/" [package] --trusted-host [host]
pip install -i "http://[user]:[password]@[host]/root/dev/+simple/" [package] --trusted-host [host]

# 例子
pip install -i http://localhost:3141/root/pypi ansible
pip install -i http://user1:123@localhost:3141/user1/thu ansible

2、長(zhǎng)期使用

修改本地 pip.conf 文件,默認(rèn)在~/.pip/pip.conf。

[global]
trusted-host=[HOST]
index-url=http://[HOST]:[PORT]/root/pypi/
#  extra-index-url=http://mirrors.aliyun.com/pypi/simple/
timeout=120

以上就是python使用devpi實(shí)現(xiàn)鏡像源代理完整指南的詳細(xì)內(nèi)容,更多關(guān)于python devpi代理鏡像源的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)對(duì)服務(wù)器腳本敏感信息的加密解密功能

    python實(shí)現(xiàn)對(duì)服務(wù)器腳本敏感信息的加密解密功能

    這篇文章主要介紹了python實(shí)現(xiàn)對(duì)服務(wù)器腳本敏感信息的加密解密功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)多個(gè)Word文檔合并

    Python實(shí)現(xiàn)多個(gè)Word文檔合并

    在Python中,可以使用Python-docx庫(kù)來(lái)操作Word文檔,所以下面小編就為大家介紹一下如何利用Python-docx實(shí)現(xiàn)多個(gè)Word文檔合并功能吧,需要的可以參考一下
    2023-06-06
  • Python中的np.argmin()和np.argmax()函數(shù)用法

    Python中的np.argmin()和np.argmax()函數(shù)用法

    這篇文章主要介紹了Python中的np.argmin()和np.argmax()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • tkinter高級(jí)布局之PanedWindow和notebook詳解

    tkinter高級(jí)布局之PanedWindow和notebook詳解

    本文主要介紹了tkinter中的兩種布局控件,分別是可以動(dòng)態(tài)劃分子控件的PanedWindow,和提供了選項(xiàng)卡工具的notebook,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-08-08
  • 如何給windows設(shè)置定時(shí)任務(wù)并運(yùn)行python腳本

    如何給windows設(shè)置定時(shí)任務(wù)并運(yùn)行python腳本

    這篇文章主要介紹了如何給windows設(shè)置定時(shí)任務(wù)并運(yùn)行python腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • keras用auc做metrics以及早停實(shí)例

    keras用auc做metrics以及早停實(shí)例

    這篇文章主要介紹了keras用auc做metrics以及早停實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Python實(shí)現(xiàn)自動(dòng)化清理臨時(shí)文件的全攻略

    Python實(shí)現(xiàn)自動(dòng)化清理臨時(shí)文件的全攻略

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)自動(dòng)化清理臨時(shí)文件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-03-03
  • python小程序基于Jupyter實(shí)現(xiàn)天氣查詢的方法

    python小程序基于Jupyter實(shí)現(xiàn)天氣查詢的方法

    這篇文章主要介紹了python小程序基于Jupyter實(shí)現(xiàn)天氣查詢的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python基于jieba分詞實(shí)現(xiàn)snownlp情感分析

    Python基于jieba分詞實(shí)現(xiàn)snownlp情感分析

    情感分析(sentiment analysis)是2018年公布的計(jì)算機(jī)科學(xué)技術(shù)名詞,它可以根據(jù)文本內(nèi)容判斷出所代表的含義是積極的還是負(fù)面的等。本文將通過(guò)jieba分詞實(shí)現(xiàn)snownlp情感分析,感興趣的可以了解一下
    2023-01-01
  • 實(shí)例講解python中的協(xié)程

    實(shí)例講解python中的協(xié)程

    在本篇文章里我們給大家通過(guò)實(shí)例講述一下關(guān)于python中的協(xié)程相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2018-10-10

最新評(píng)論

焉耆| 抚顺县| 勃利县| 曲松县| 上杭县| 淅川县| 泸州市| 名山县| 腾冲县| 池州市| 时尚| 灌阳县| 泸溪县| 呼玛县| 刚察县| 工布江达县| 峨山| 彝良县| 双鸭山市| 乌拉特中旗| 焉耆| 阿图什市| 康定县| 阳泉市| 鹿邑县| 景宁| 井冈山市| 天镇县| 郯城县| 旬邑县| 明水县| 汶上县| 威远县| 巍山| 德化县| 甘孜| 逊克县| 余干县| 东至县| 无棣县| 濮阳县|