編者語:通常我們使用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
服務
http
如果是在linux環境下可以非常友善的建立http檔案伺服器,使用apache即可,網上也有很多的教程,隻需要安裝并建立一個軟連結,是下載下傳的
working-dir
連接配接到apache的/var/www/html檔案夾即可。
# 羅列簡要過程代碼
sudo apt install apache2
yum install httpd httpd-devel httpd-manual httpd-tools
# 啟動或開機啟動
systemctl enable httpd.service
systemctl start httpd.service
# 預設站點根目錄位置/var/www/html
ln -s /your/download/path/working-dir /var/www/html/anaconda
# 上述代碼網絡有大量教程,這裡隻是羅列重要過程的
複制
編者在windows下進行搭建,使用
nginx
,當然linux下也可以用
nginx
。
Nginx下載下傳
去官網[3]下載下傳最新版本。
修改配置檔案
1.将下載下傳Nginx壓縮包解壓到檔案夾
2.修改
nginx/conf/nginx.conf
3.增加如下代碼:
# 注意server段增加在http段下。
server {
listen 10086;
server_name anaconda_mirrors;
charset utf-8;
root L:/anaconda/; # 此處對應下載下傳腳本中的working-dir
location / {
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
和清華大學開源鏡像的幫助指南一樣,在
.conda.rc
中增加以下内容:
http://127.0.0.1:10086/cloud/conda-forge/win-64
http://127.0.0.1:10086/cloud/conda-forge/noarch
http://127.0.0.1:10086/pkgs/free/win-64
http://127.0.0.1:10086/pkgs/free/noarch
http://127.0.0.1:10086/pkgs/main/win-64
http://127.0.0.1:10086/pkgs/main/noarch
複制
指令行添加
conda config --add channels http://127.0.0.1:10086/cloud/conda-forge/win-64
conda config --add channels http://127.0.0.1:10086/cloud/conda-forge/noarch
conda config --add channels http://127.0.0.1:10086/pkgs/free/win-64
conda config --add channels http://127.0.0.1:10086/pkgs/free/noarch
conda config --add channels http://127.0.0.1:10086/pkgs/main/win-64
conda 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