编者语:通常我们使用anaconda进行pkgs的安装时,使用anaconda官方镜像通常较慢,一般来说在国内使用清华大学的镜像或者其他开源镜像速度会有比较大的提升。但在部分内网环境下,无法访问互联网资源,安装pkgs就显得非常麻烦,一般也有比较成熟的解决方案,大都过于麻烦,因此本文试图通过搭建二级镜像解决内网环境下python各种pkgs的安装。
常规内网安装解决方案
1.在一台能够访问互联网资源且具有与安装目标位置相同配置的环境下将所有需要安装的pkgs下载到本地,之后copy到安装目标位置并离线安装。2.通过一台能够访问互联网资源的服务器或PC转发安装目标位置的互联网请求,编者仅测试成功pip安装(pip可以使用http请求),由于网上的anaconda镜像大都是https请求,转发该类请求相对比较麻烦,我尚未测试成功,后续可以继续测试。
搭建二级镜像
1.搭建二级镜像必须将所有的anaconda官网pkgs全部下载到本地,幸好我们通过搜索引擎找到了清华大学已经写好的代码[1]。使用脚本下载的会和清华大学的anaconda镜像一样,其中的pkgs相对较多,如果不需要的话我们则不必下载,对文件进行修改或直接注释。另外这个脚本下载源是anaconda官网,如果网络不好同样下载会比较慢。2.清华大学的下载脚本,将下载源更改为清华大学开源镜像。由于清华大学开源镜像未在网页中提供md5,所以对代码进行修改,取消md5检查(md5_check全部返回True)。详见修改后清华源下载代码[2]。
脚本使用:
python anaconda.py --working-dir=/your/download/path#路径使用示例./ 脚本当前所在目录../ 脚本所在上级目录其他请指定绝对路径!
搭建http服务
如果是在linux环境下可以非常方便的创建http文件服务器,使用apache即可,网上也有很多的教程,只需要安装并创建一个软链接,是下载的working-dir连接到apache的/var/www/html文件夹即可。
# 罗列简要过程代码sudo apt install apache2yum install httpd httpd-devel httpd-manual httpd-tools# 启动或开机启动systemctl enable httpd.servicesystemctl start httpd.service# 默认站点根目录位置/var/www/htmlln -s /your/download/path/working-dir /var/www/html/anaconda# 上述代码网络有大量教程,这里只是罗列重要过程的
编者在windows下进行搭建,使用nginx,当然linux下也可以用nginx。
Nginx下载
去官网[3]下载最新版本。
修改配置文件
1.将下载Nginx压缩包解压到文件夹
2.修改nginx/conf/nginx.conf3.增加如下代码:
# 注意server段增加在http段下。server {listen 10086;server_name anaconda_mirrors;charset utf-8;root L:/anaconda/; # 此处对应下载脚本中的working-dirlocation / {autuindex on; # 索引autuindex_exact_size on; # 文件大小autoindex_localtime on; # 文件时间}}
运行nginx
start nginx.exe
至此我们就可以使用服务了,打开网址127.0.0.1:10086[4]就可以看到我们搭建的文件服务器了。
127.0.0.1或者localhost在搭建镜像本地使用的网址,如果在其他位置使用直接替换为镜像服务器ip即可,以下配置也是一样的道理。
windows服务
通常我们运行nginx后,遇到服务器重启,nginx并不会自动重启,因此将其注册为windows服务即可。参考nginx注册windows服务[5]。
配置anaconda
修改.conda.rc
和清华大学开源镜像的帮助指南一样,在.conda.rc中增加以下内容:
http://127.0.0.1:10086/cloud/conda-forge/win-64http://127.0.0.1:10086/cloud/conda-forge/noarchhttp://127.0.0.1:10086/pkgs/free/win-64http://127.0.0.1:10086/pkgs/free/noarchhttp://127.0.0.1:10086/pkgs/main/win-64http://127.0.0.1:10086/pkgs/main/noarch
命令行添加
conda config --add channels http://127.0.0.1:10086/cloud/conda-forge/win-64conda config --add channels http://127.0.0.1:10086/cloud/conda-forge/noarchconda config --add channels http://127.0.0.1:10086/pkgs/free/win-64conda config --add channels http://127.0.0.1:10086/pkgs/free/noarchconda config --add channels http://127.0.0.1:10086/pkgs/main/win-64conda config --add channels http://127.0.0.1:10086/pkgs/main/noarch
对于Linux下apache搭建的http服务则需要修改URL。
当在其他PC访问时,将127.0.0.1修改为http服务器所在IP即可。
结语
至此就可以使用自己的二级镜像了,我们来尝试一下吧。注意:如果要下载太多库,需要存储超过2T。
conda update --all
参考链接
[1] 代码: https://github.com/tuna/tunasync-scripts/blob/master/anaconda.py
[2] 清华源下载代码: https://gist.github.com/lovechang1986/ba5760da06f815ed56a474b29b052381
[3] 官网: http://nginx.org/en/download.html
[4] 127.0.0.1:10086:
[5] nginx注册windows服务: https://blog.csdn.net/qq_36949713/article/details/83108149