搭建本地的pip镜像源

1. 创建文件夹:./pypi_mirror_test

2. 创建并进入conda虚拟环境,安装pip2pi包

pip install pip2pi

3. 下载pypi的packages

可以参考其他博客,或者我之前的博客.

偷懒,仅仅测试用的话:

1)在文件夹下创建requirements.txt文本文件,内容如下

requirements.txt

beautifulsoup4==4.11.1
bs4==0.0.1
certifi 
charset-normalizer==2.1.1
idna==3.4
lxml==4.9.1
numpy==1.21.6
pandas==1.3.5
pip2pi==0.8.2
python-dateutil==2.8.2
pytz==2022.6
requests==2.28.1
six==1.16.0
soupsieve==2.3.2.post1
urllib3==1.26.13
wincertstore==0.2

2)在命令行中,进入pypi_mirror_test目录所在文件夹,执行以下命令, 安装几个pypi数据包

pip install -r ./pypi_mirror_test/requirements.txt

4. 执行dir2pi命令,生成pypi包的html索引

说明:

  • 1)dir2pi函数是pip2pi包中自带的,不需要额外安装。
  • 2)在ubuntu下运行需要加 sudo 命令。
  • 3)在windows下运行,需要“以管理员身份”命令行,否则会报错。

在linux中:

sudo dir2pi ./pypi_mirror_test

在windows中:以管理员身份打开cmd命令行终端,执行

dir2pi ./pypi_mirror_test

执行完毕后,会在./pypi_mirror_test文件夹下生成一个simple文件夹,存储着python包的html索引。

5. 发布镜像源(暴露资源至网络),使得互联网或局域网可以访问下载package

方式1:用python创建server服务

simple或者在site-packages 里创建server服务,8080为端口号,可以随意设置:

python -m http.server 8080

 此时可以在浏览器中访问并下载自己建立的pypi镜像库

路径1:127.0.0.1:8080

路径2:your_compuer_ip:8080. 其中,your_compuer_ip是你电脑的ipv4的地址,可以通过命令行终端自行查看。

方式2: 用nginx发布

下载安装nginx,修改nginx.conf:(nginx下载地址)

server{listen		8080;  # 1.设置端口server_name 	127.0.0.1;  # 2.设置网址名access_log 	logs/pip.log;location / {root D:/program/pypi_mirror_test/simple; # 3.设置html文件的搜索路径autoindex on;autoindex_exact_size off;autoindex_localtime on;}
}

双击执行nginx.exe启动nginx,此时可以用浏览器打开127.0.0.1:8080访问simple文件夹,

但是我这里总是下载文件失败,还没找到原因。

【错误原因】可能是没有配置好nginx对“.symlink”文件的权限。通过修改simple文件夹下的index.html文件可以绕过.symlink文件,直接下载源文件。具体修改方法是:

需要去修改simple目录下每个软件包目录下的index.html文件(此部分修改可自行写个python脚本批处理下):
手动操作示范:

在这里插入图片描述

修改前:
在这里插入图片描述

修改后:
在这里插入图片描述

用python脚本批量修改:

import os 
import globclass Class_Util_Text():def __init__(self):passdef read_text(self,text_path):"""读取本地text文件到列表,并返回该列表"""assert os.path.exists(text_path)with open(text_path,"r") as f:lines=f.readlines() #读行return linesdef write_text(self,text_path,text_content):"""把文字写入文本文件中,会清空文本文件的原有内容"""with open(text_path,"w") as f:f.writelines(text_content)f.writelines("\n")def append_text(self,text_path,text_content):"""把文字添加到文本文件的末尾,保留原文本文件内容"""with open(text_path,"a") as f:f.writelines(text_content)f.writelines("\n")def replace_text(self,text_path,replace_old,replace_new):"""替换文本文件中的部分文字,先读文件,替换文字后,再重新写入文件"""#readwith open(text_path,"r") as f:lines=f.readlines() data=[]  for i in lines:#根据条件修改if(replace_old in i):i=i.replace(replace_old,replace_new)   #修改 replace_old 为 replace_newdata.append(i)     #记录每一行      #writewith open(text_path,"w") as f:for i in data:f.writelines(i)if __name__ =="__main__":txt_obj = Class_Util_Text()dir_path = "D:\pypi-packages\simple"html_files = glob.glob(dir_path+"/*/index.html")for html_path in html_files:txt_obj.replace_text(html_path,replace_old="<a href='",replace_new="<a href='../../" )# txt_obj.replace_text(html_path,replace_old="<a href='../../",replace_new="<a href='" )lines = txt_obj.read_text(html_path)print(html_path)print(lines)

方式3:pypi-server命令

先安装pypiserver

pip install pypiserver

然后执行下面命令: 

pypi-server -p 9090 -P your_path_to_pypi_dir

命令解析:

        -p:指定端口。不指定的话,pypi-server的默认端口是8080.

        -P:指定package路径。不指定的话,pypi-server的默认路径是“~/packages”

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系列十一(实战)、发送 接收带标签的消息(Java操作RocketMQ)

一、发送 & 接收带标签的消息 1.1、概述 消息的种类纷繁复杂&#xff0c;不同的业务场景需要不同的消息&#xff0c;基于此RocketMQ提供了消息过滤功能&#xff0c;通过Tag或者Key进行区分&#xff0c;本章介绍Tag&#xff0c;我们再往一个Topic里面发送消息的时候&#x…

【浏览器】同源策略和跨域

1. 什么是跨域 在说跨域之前,先说说同源策略,什么是同源策略呢?同源策略是浏览器的一种安全机制,减少跨站点脚本攻击(XSS,Cross Site Scripting)、跨站点请求伪造(CSRF,Cross Site Request Forgery)攻击等,因为非同源的请求会被浏览器拦截掉。 同源就是协议、域名(…

doris基本操作,04-表结构的变更

整体思路 因为doris完全兼容mysql协议&#xff0c;因此操作上基本与mysql没有太大区别&#xff0c; 之需要注意与doris相关的关键字即可&#xff0c;如&#xff1a;预聚合&#xff0c;key等 当前表结构 create table table1 {siteid int default 10,citycode smallint,usern…

【Unity地形】使用地形工具创建场景环境-Terrain

如上图Unity的地形工具可以让我们实现创建复杂、丰富的3D室外环境。 我们创建地形很简单&#xff0c;在层级面板中右键-3Dobject-Terrain 就可以创建一个默认的地形模型&#xff01;这个模型是Unity内置的。 接下来的地形编辑功能全部集中在这个地形的组件上 主要功能如下&…

Goland配置leetcode

1. 安装 首先在goland的setting界面上找到Plugins&#xff0c;然后搜索关键字leetcode&#xff0c;找到LeetCode Editor&#xff0c;安装它。 在安装后&#xff0c;第一次需要对其进行配置&#xff0c;在Tools中找到LeetCode Plugins&#xff0c;如下图所示进行配置。首先国内…

关于调试和开发中对文件写操作导致乱码问题

背景基于上文log机制重定向问题&#xff0c;将代码打印单独存放文件中出现双击文件&#xff0c;如下图现象所示(银河麒麟系统) 使用vim打开文件发现有许多/00的乱码。 怀疑是数据没有同步至硬盘导致的。 于是在每次输入到文件后加入fdatasync函数&#xff0c;部分代码如下&am…

three.js使用精灵模型Sprite渲染森林

效果&#xff1a; 源码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right&quo…

React学习计划-React16--React基础(六)路由

路由 一、版本5路由 1. react-router-dom 2. 路由的使用 1. 基础使用 安装&#xff1a;yarn add react-router-dom5明确好界面中的导航区、展示区导航区Link标签包裹 <Link to"/home">Home</Link>展示区写在Route标签进行匹配 <Route path/home …

2024年PMP考试新考纲-PMBOK第七版-项目管理原则真题解析(续3)

马上就要进入2024年了&#xff0c;要参加2024年PMP一季度考试的小伙伴可以准备起来了。2024年的PMP考试将继续采用新考试大纲&#xff0c;考试内容包括PMBOK第六版、PMBOK第七版和敏捷实践指南&#xff0c;而且敏捷&#xff08;或者叫混合&#xff09;的项目环境将占比超过50%&…

2024年最新Python爬虫入门『最强教程』新鲜出炉!

近年来&#xff0c;大数据成为业界与学术界最火热的话题之一&#xff0c;数据已经成为每个公司极为重要的资产。互联网大量的公开数据为个人和公司提供了以往想象不到的可以获取的数据量。而掌握网络爬虫技术可以帮助你获取这些有用的公开数据集。 爬虫能干什么呢&#xff1f;一…

chatglm3本地部署(综合Demo版本)教程

1.下载代码 我是在本地c盘中&#xff0c;创建了一个glm3文件夹&#xff0c;然后把代码拉到这个文件夹里&#xff0c;所以在clone之前&#xff0c;需要在cmd中&#xff0c;把路径切换到glm3文件夹下&#xff0c;然后执行如下代码。 git clone https://github.com/THUDM/ChatGL…

第十九节TypeScript 模块

1、TypeScript模块&#xff1a; 模块是在其自身的作用域里执行&#xff0c;并不是在全局作用域&#xff0c;这意味着定义在模块里面的变量、函数和类等在模块外部是不可见的&#xff0c;除非明确地使用 export 导出它们。类似地&#xff0c;我们必须通过 import 导入其他模块导…