❶ python第三方庫,國內鏡像源(清華&阿里)
命令:
例:
pip install -i https://pypi.tuna.tsinghua.e.cn/simple pyqt5
國內兩個鏡像源:
清華: https://pypi.tuna.tsinghua.e.cn/simple
阿里: http://mirrors.aliyun.com/pypi/simple
❷ 怎麼在區域網發布python的pypi鏡像源
默認pip是使用Python官方的源,但是由於國外官方源經常被牆,導致不可用,我們可以使用國內的python鏡像源,從而解決Python安裝不上庫的煩惱。
注意後面要有/simple目錄!!!
❸ python3.7基礎鏡像有多大
選擇基礎鏡像的難題
在使用Docker部署某類服務時,第一個面臨的問題就是選擇一個基礎鏡像。那麼如何選擇基礎鏡像更有利於我們的工作呢?
我們知道docker是基於linux的,任何一個鏡像,其包含的 bins/libs/files 都可以認為是屬於特定linux版本的一部分。linux一切皆文件的思想下,我們在使用docker製作服務鏡像部署時,包管理、環境設置、程序安裝、命令格式、文件系統、兼容性等對於不同linux版本都可能有一些區別,所以,選擇一個習慣使用的linux版本就變得尤為重要。
舉例來說,我需要經常用docker部署Python應用。在docker hub中選擇哪個基礎鏡像呢?搜索「適合Python開發的Docker鏡像」會有很多文章,常用的主要有Alpine、Stretch、Jessie等,默認版本是基於Ubuntu的,但是太大了。
Alpine是一個微型linux系統,選擇這個版本鏡像的很多,因為它足夠小,但是實際項目使用時卻發現各種各樣的問題。最大問題就是它的c運行庫採用 musl-libc 而不是linux各發行版的 glibc,所以涉及c運行時會有兼容性的問題。
2、定製基礎鏡像
在選擇基礎鏡像的問題上踩坑無數之後,決定換個角度想:為什麼不基於特定的linux版本,自己製作一個基礎鏡像呢?這樣自己又熟悉,又有開發環境來驗證問題,而且很多製作應用鏡像時遇到的問題,都可以在定製的基礎鏡像中一次性解決。
從這個想法出發,我選擇熟悉的linux版本基礎鏡像,然後在其中按需求安裝Python環境,一切都跟在伺服器上安裝Python環境一樣,這不就又回到了熟悉的操作了嗎?不同的是,這些只需要做一次就可以了,得到自己定製的Python基礎鏡像,後面製作各種應用鏡像時,只需要pip安裝依賴庫、復制文件、添加命令就可以了。
這個方法同樣適用其他的環境基礎鏡像定製,選擇自己的linux基礎鏡像,在其中像往常一樣安裝需要的環境。這樣,就可以從鏡像里不熟悉的文件系統中解脫出來了。
3、定製CentOS系統Python基礎鏡像
下面給出一個實例:
開發環境:CentOS 7
Python版本:3.6
# 完整功能python3 imiyuer/python:3.6.4-centos
FROM centos:7.5.1804
MAINTAINER imiyuer <[email protected]>
ENV PATH $PATH:/usr/local/python3/bin/
ENV PYTHONIOENCODING utf-8
RUN set -ex \
# 替換yum源
&& mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup \
&& curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo \
&& sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \
# 安裝python依賴庫
&& yum makecache \
&& yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make wget \
&& yum clean all \
&& rm -rf /var/cache/yum \
# 下載安裝python3
&& wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz \
&& mkdir -p /usr/local/python3 \
&& tar -zxvf Python-3.6.4.tgz \
&& cd Python-3.6.4 \
&& ./configure --prefix=/usr/local/python3 \
&& make && make install && make clean \
# 修改pip默認鏡像源
&& mkdir -p ~/.pip \
&& echo '[global]' > ~/.pip/pip.conf \
&& echo 'index-url = https://pypi.tuna.tsinghua.e.cn/simple' >> ~/.pip/pip.conf \
&& echo 'trusted-host = pypi.tuna.tsinghua.e.cn' >> ~/.pip/pip.conf \
&& echo 'timeout = 120' >> ~/.pip/pip.conf \
# 更新pip
&& pip3 install --upgrade pip \
# 安裝wheel
&& pip3 install wheel \
# 刪除安裝包
&& cd .. \
&& rm -rf /Python* \
&& find / -name "*.py[co]" -exec rm '{}' ';' \
# 設置系統時區
&& rm -rf /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
登錄後復制
比如我的生產環境是centos:7.5.1804,就選擇它作為基礎鏡像。
將Python安裝在/usr/local/python3,所以把程序路徑添加到PATH環境變數,後續安裝的python程序就不需要再添加環境變數或軟連接。添加Python的encoding環境變數為utf-8。
後面下載安裝Python的過程就都比較熟悉了,玩過Python的人都知道。
最終生成鏡像大小:453MB,感覺還好。alpine鏡像是90M但是很坑,默認python鏡像是689MB。
幾點說明:
1、RUN中盡量使用 \ &&連接命令的方式,減少鏡像層數,可以一定程度減少體積。
2、盡可能刪除不需要的文件,也是為了減少鏡像體積。
3、Python默認不安裝wheel,但是第三方庫常需要使用wheel安裝,所以加上它。
4、docker運行時程序獲取系統時間時,如列印日誌等,獲取的是docker鏡像內文件系統的時區設置,默認是格林尼治標准時區,所以需要設置為所在的時區。
❹ Python 鏡像源設置與代理
1、在%appdata%目錄下,新建文件夾pip
2、在pip文件夾下新建pip.ini文件
內容如下
1、安裝nexus3,可以原生安裝,也可以用docker安裝,具體步驟自己網路
2、添加python倉庫代理,參考 https://blog.csdn.net/u010674101/article/details/119895993
【重點】
❺ 【Python】 設置 pip 默認下載路徑(含國內鏡像源)
如使用 清華鏡像 安裝 lxml 庫的命令如下所示:
在c盤下找到當前用戶,進入當前用戶命名的文件夾後創建一個新文件夾「pip」,在pip中創建一個文本文件pip.txt,將後綴名改為.ini
pip.ini文件內容(設置國內鏡像源,這里使用的是清華鏡像,文章後面提供有其他常用鏡像)
保存即可,如安裝 lxml 庫的命令如下所示(默認為清華鏡像,不需要加 -i 屬性):
清華:https://pypi.tuna.tsinghua.e.cn/simple
阿里雲:http://mirrors.aliyun.com/pypi/simple/
中國科技大學 https://pypi.mirrors.ustc.e.cn/simple/
華中理工大學:http://pypi.hustunique.com/
山東理工大學:http://pypi.stlinux.org/
豆瓣:http://pypi.douban.com/simple/
❻ 你的 Python 鏡像還好嗎
隨著 k8s 集群規模變大,以及彈性擴容的觸發,導致 harbor 倉庫的瓶頸問題逐漸暴露出來,目前也做了一些優化措施:
在做鏡像優化的時候,發現之前我們的 python 提速方案還有一些瑕疵,所以有了這里的分析。
在 Python 項目構建 Docker 鏡像時,經常遇到項目源碼才幾百 KB,但是安裝的依賴能高達數百 MB,甚至 GB,這不僅使鏡像體積變的很大,而且因為網路安裝依賴包導致嚴重拖慢構建速度。
注意:這里僅關系依賴問題,所以忽略源碼部分
示例 1:
相當糟糕,依賴安裝了 713MB,花了 5 分鍾,太慢了。
基於剛才已經構建過的依賴鏡像,再次去構建時間工作的鏡像
示例 2:
為什麼這里再次安裝 requirements.txt,直接刪掉該步驟不就好了嗎?
實際情況下,研發人員可能會在倉庫中修改 requirements.txt,如果這里不再次安裝下,最終發版可能就要提示缺少包而報錯了。這里再次安裝下依賴,就是防止該問題。
再次構建,相當好,8 秒,再次安裝的依賴層 0B(我們這里沒有模擬研發人員修改 requirements.txt 的情況),我們取得了巨大的進步。
這個詞有點像電影里的鏡頭,以示例 2 中的 Dockerfile 再次構建:
示例 3:
問題來了,隨著歲月的流逝,構建時間怎麼變成了 2 分鍾,再次安裝的依賴層 173MB(我們這里沒有模擬研發人員修改 requirements.txt 的情況)
原來安裝依賴的時候除了上面 requirements.txt 中寫好的依賴,還有一些沒有出現在 requirements.txt 中的依賴,而這些依賴的版本如 grpcio>=1.8.6 會隨著時間的推移,而產生不同的版本
...
Requirement already satisfied: grpcio>=1.8.6 in /usr/local/lib/python3.6/site-packages (from tensorflow==2.0.0b1->-r /code/requirements.txt (line 9)) (1.34.1)
Requirement already satisfied: wheel>=0.26 in /usr/local/lib/python3.6/site-packages (from tensorflow==2.0.0b1->-r /code/requirements.txt (line 9)) (0.33.4)
...
❼ Python項目打包為docker鏡像並遷移
1.安裝docker服務:
centos 下直接yum安裝
yum install docker
2.修改docker倉庫地址為國內:
略
3.編寫Dockerfile, 如下:
4.製作鏡像:
docker build -f Dockerfile -t blogapp:1.0 .
ps:
最後一個參數是.號,別忘了加
製作鏡像可能是一個漫長的過程。。。
途中有問題會中止,需要檢查問題並修改Dockerfile,然後重新開始。。。
5.查看製作的鏡像:
docker images
6.運行鏡像,創建鏡像實例,即運行容器:
docker run -it -p 192.168.5.109:8080:8888 blogapp:1.0
可以看到,項目已經正常開啟,瀏覽器可以正常訪問:
7.導出鏡像為tar包:
docker image save -o blogapp.tar blogapp:1.0
8.在新機導入tar包為鏡像:
docker load < blogapp.tar
9.查看新導入的鏡像:
10.在新機運行鏡像,後台開啟容器:
docker run -it -p 192.168.5.110:8080:8888 blogapp:1.0
可以看到後台開啟成功,瀏覽器訪問新址:
❽ Python 常用的標准庫以及第三方庫有哪些
Python常用庫大全,看看有沒有你需要的。
環境管理
管理 Python 版本和環境的工具
p – 非常簡單的互動式 python 版本管理工具。
pyenv – 簡單的 Python 版本管理工具。
Vex – 可以在虛擬環境中執行命令。
virtualenv – 創建獨立 Python 環境的工具。
virtualenvwrapper- virtualenv 的一組擴展。
包管理
管理包和依賴的工具。
pip – Python 包和依賴關系管理工具。
pip-tools – 保證 Python 包依賴關系更新的一組工具。
conda – 跨平台,Python 二進制包管理工具。
Curdling – 管理 Python 包的命令行工具。
wheel – Python 分發的新標准,意在取代 eggs。
包倉庫
本地 PyPI 倉庫服務和代理。
warehouse – 下一代 PyPI。
Warehousebandersnatch – PyPA 提供的 PyPI 鏡像工具。
devpi – PyPI 服務和打包/測試/分發工具。
localshop – 本地 PyPI 服務(自定義包並且自動對 PyPI 鏡像)。
分發
打包為可執行文件以便分發。
PyInstaller – 將 Python 程序轉換成獨立的執行文件(跨平台)。
dh-virtualenv – 構建並將 virtualenv 虛擬環境作為一個 Debian 包來發布。
Nuitka – 將腳本、模塊、包編譯成可執行文件或擴展模塊。
py2app – 將 Python 腳本變為獨立軟體包(Mac OS X)。
py2exe – 將 Python 腳本變為獨立軟體包(Windows)。
pynsist – 一個用來創建 Windows 安裝程序的工具,可以在安裝程序中打包 Python本身。
構建工具
將源碼編譯成軟體。
buildout – 一個構建系統,從多個組件來創建,組裝和部署應用。
BitBake – 針對嵌入式 Linux 的類似 make 的構建工具。
fabricate – 對任何語言自動找到依賴關系的構建工具。
PlatformIO – 多平台命令行構建工具。
PyBuilder – 純 Python 實現的持續化構建工具。
SCons – 軟體構建工具。
互動式解析器
互動式 Python 解析器。
IPython – 功能豐富的工具,非常有效的使用互動式 Python。
bpython- 界面豐富的 Python 解析器。
ptpython – 高級互動式Python解析器, 構建於python-prompt-toolkit 之上。
文件
文件管理和 MIME(多用途的網際郵件擴充協議)類型檢測。
imghdr – (Python 標准庫)檢測圖片類型。
mimetypes – (Python 標准庫)將文件名映射為 MIME 類型。
path.py – 對 os.path 進行封裝的模塊。
pathlib – (Python3.4+ 標准庫)跨平台的、面向對象的路徑操作庫。
python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 介面。
Unipath- 用面向對象的方式操作文件和目錄
watchdog – 管理文件系統事件的 API 和 shell 工具
日期和時間
操作日期和時間的類庫。
arrow- 更好的 Python 日期時間操作類庫。
Chronyk – Python 3 的類庫,用於解析手寫格式的時間和日期。
dateutil – Python datetime 模塊的擴展。
delorean- 解決 Python 中有關日期處理的棘手問題的庫。
moment – 一個用來處理時間和日期的Python庫。靈感來自於Moment.js。
PyTime – 一個簡單易用的Python模塊,用於通過字元串來操作日期/時間。
pytz – 現代以及歷史版本的世界時區定義。將時區資料庫引入Python。
when.py – 提供用戶友好的函數來幫助用戶進行常用的日期和時間操作。
文本處理
用於解析和操作文本的庫。
通用
chardet – 字元編碼檢測器,兼容 Python2 和 Python3。
difflib – (Python 標准庫)幫助我們進行差異化比較。
ftfy – 讓Unicode文本更完整更連貫。
fuzzywuzzy – 模糊字元串匹配。
Levenshtein – 快速計算編輯距離以及字元串的相似度。
pangu.py – 在中日韓語字元和數字字母之間添加空格。
pyfiglet -figlet 的 Python實現。
shortuuid – 一個生成器庫,用以生成簡潔的,明白的,URL 安全的 UUID。
unidecode – Unicode 文本的 ASCII 轉換形式 。
uniout – 列印可讀的字元,而不是轉義的字元串。
xpinyin – 一個用於把漢字轉換為拼音的庫。
❾ Python Docker 最小化鏡像
對比下 Python Docker 官方鏡像 ,alpine 是最小的版本
我的項目中用到了 mysqlclient 包里的 MySQLdb 庫,需要安裝一些環境依賴
requirements.txt
Dockerfile
這種方式打包出來的鏡像只有 115MB :)
精簡的思路就是使用最小的根鏡像,然後按需安裝必要的依賴,最後清理掉臨時沒用的文件