ubuntu: 搭建pypi镜像源
2023-12-26 22:38:16
比较简单,这里只简要记录流程
1. 创建虚拟环境
python -m venv ./virtual_env
2. 激活虚拟环境
source ./virtual_env/bin/activate
3. 安装pip2pi
pip install pip2pi
4. 下载清华pypi镜像包
????????这个过程比较耗时,我大概用了快一周的时间,共下载了12T的数据。清华那边的服务器原因,中间被停了几次。可以多开几个线程并行下载。
1)获取镜像源的requirements.txt (大概有几个G)
????????prepare_pypi_requirements.py
import requests
import re
report = requests.request('get','https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/')
# print(report.text)
text_str = str(report.text).split('\n')
with open('requirement.txt','w+') as f:
for i in text_str:
temp = re.findall('<a href="(.*?)/">',i)
# print(i,temp)
if temp != []:
f.write(str(temp[0])+'\n')
在当前文件夹下得到一个requirements.txt文件,大概有几个G。
2)下载pypi库文件
#!/bin/bash
import os
file="./requirement.txt" # 可以修改成全局路径
with open(file,'r+') as f:
text = f.readlines()
for i in text:
os.mkdir('/home/data1/pypi_packages/'+i[:-1])
os.system('pip download '+i[:-1]+' -i \
https://pypi.tuna.tsinghua.edu.cn/simple -d \
'+'/home/data1/pypi_packages/'+i[:-1])
5. 运行dir2pi命令
dir2pi ./pypi_packages
运行完毕后,在pypi_packages目录内生成了一个simple文件夹。
6. 把simple文件夹暴露在网络中
方式 1)?python创建server
python -m http.server 8080 --bind your_machine_ip --directory /path/to/pypi_packages/simple
- tip1:? 8080是port,数值不能太小,把port设置为2023或者2024不work.
- tip2:? --bind 后面跟的是本机的IP。比如:168.163.1.1.
- tip3:? --diectory 后面跟的是?simple文件夹的全局路径。
方式 2)用nginx
在ubuntu中离线安装nginx的教程见:Ubuntu18.04 离线安装nginx-CSDN博客
假设nginx的安装路径是:/usr/local/nginx。
a )修改nginx.conf
????????总共修改三个位置,如下
server{
listen 8080; # 1.修改位置1:设置端口
server_name 168.163.1.1:8080; # 2.修改位置2:输入你的ubuntu-IP。
location / {
root /home/data1/pypi-packages; # 3.修改位置3--设置html文件的搜索路径,在simple文件夹的前一层
}
}
?b) 启动nginx
sudo /usr/local/nginx/nginx
或
co /usr/local/nginx
sudo ./nginx -c ./nginx.config
?7. 测试镜像
????????配置pip:
# 修改搜索路径
pip config set global.index-url http://168.163.1.1:8080/simple
# 添加对搜索IP的信任,否则会install失败
pip config set install.trusted-host 168.163.1.1
? ? ? ? 测试镜像:
pip install bs4
?
文章来源:https://blog.csdn.net/Strive_For_Future/article/details/135231200
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!