python鏡像源
1. 【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/
2. 【Python基礎】PIP 鏡像源配置輕松搞定
pip 是 python 必不可少的的包管理工具,但是要在國內用得爽,必須要配置鏡像源。
有哪些鏡像站可用,以及如何配置,網上都有很多分享了。
我常用的是 阿里雲鏡像站 。
這里有一點比較麻煩的地方,就是是 Linux 和 Windows 環境下的 pip 配置文件的名字和位置都不同,經常混淆。
今天就教大家一招,快速搞定:
執行完上面兩條命令就可以啦。
pip config set 命令能自動把配置寫入到用戶對應的配置文件中:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
命令雖然方便,但是參數格式復雜,記住不太容易,要是想改一下也挺麻煩,
所以我們進一步了解一下細節。
「 下面我以 Windows 系統為例,實際在 Linux 系統也是類似
查看配置
執行 pip config list 命令可以顯示已經有了哪些配置:
pip config list
global.index-url='http://mirrors.aliyun.com/pypi/simple/'
install.trusted-host='mirrors.aliyun.com'
帶上一個 -v 選項:
pip config list -v
For variant 'global', will try loading 'C:\ProgramData\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\davy\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\davy\AppData\Roaming\pip\pip.ini'
For variant 'site', will try loading 'c:\users\davy\appdata\local\programs\python\python38\pip.ini'
global.index-url='http://mirrors.aliyun.com/pypi/simple/'
install.trusted-host='mirrors.aliyun.com'
「 這里有一點不太好的地方是不顯示配置是在哪個文件里。
就把它嘗試獲取的配置文件名完整路徑列出來了。前面的 global 和 user 和 site 分別表示配置文件生效的范圍:
global - 全局,一般不用
user - 當前用戶,推薦
site - 只針對某一個 python 解釋器
可以看到 user 有兩個地方,其中配置任何一個都是可以的。
有的網路文章推薦的手動創建文件地址是前面那個,但是 pip 默認創建的是後者。
編輯配置
在命令行直接執行 pip config edit 會自動為我們打開配置文件,但是在 Windows 環境下還不行:
pip config edit
ERROR: Could not determine editor to use.
需要手動指定一個編輯器,就用記事本就行了:
pip config edit --editor notepad
「 Linux 系統中編輯器可以使用 vi,也可以是你習慣的其它編輯器
如果你從來沒有設置過,它會報 找不到指定路徑,這是因為相應的文件夾沒有創建。
設置配置
通過 pip config set 命令可以直接設置配置項,它會自動創建沒有的文件夾和文件。但是必須要給定一個配置項:
pip config set
ERROR: Got unexpected number of arguments, expected 2. (example: "pip config set [name] [value]")
我們隨便寫一個配置:
pip config set x.y z
Writing to C:\Users\davy\AppData\Roaming\pip\pip.ini
然後再執行上面的
pip config edit --editor notepad
就能自動打開配置文件,把拷貝好的配置文件內容貼進去就可以啦。
3. 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
4. Python pip 國內換源的幾個辦法
通常在使用pip的時候,加上參數-i和鏡像地址
如:
但是這種方法每拆臘次安裝庫時旅蔽滑都需要輸入一遍國內鏡像源的地址,很麻煩。
所以就有永久修並友改pip鏡像源地址的方法。
5. Python 鏡像源設置與代理
1、在%appdata%目錄下,新建文件夾pip
2、在pip文件夾下新建pip.ini文件
內容如下
1、弊芹安裝nexus3,可以原生安裝,也可以用docker安裝,具體步驟自己租液畢網路
2、添加python倉庫代理埋絕,參考 https://blog.csdn.net/u010674101/article/details/119895993
【重點】
6. Python 包管理工具
Python之所以受歡迎不光是因為它簡單易學,更重要的是它有成千上萬的寶藏庫。這些庫相當於是已經集成好的工具,只要安裝就能在Python里使用。它們可以處理各式各樣的問題,無需你再造輪子,而且隨著社區的不斷更新維護,有些庫越來越強大,幾乎能媲美企業級應用。那麼這些工具庫怎麼下載安裝呢?它們被放在一個統一的「倉庫」里,名叫PyPi(Python Package Index),所有的庫安裝都是從這里調度。有了倉庫之後,還需要有管理員,pip就是這樣一個角色。
pip 是 Python 中的標准庫管理器,這意味著它是一個工具,用它可以來管理 Python 標准庫中其他的包,允許你安裝和管理不屬於 Python 標准庫的其它軟體包,其提供了對 Python 包的查找、下載、安裝、卸載等功能。總的來說,pip的Python第三方庫的大管家,搞懂它,會讓你省很多事。從Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本開始,pip默認包含在Python的安裝程序中,在安裝Python時將會自動被安裝,省事方便。
Python 的安裝器中自帶了 pip,所以你可以直接使用它,除非你安裝的是更早版本的 Python。你可以通過以下命令來判斷是否已安裝:
如果你的 Python 環境沒有安裝 pip,則可以使用以下方法來手動安裝。pip 安裝文件下載: pypi.org/project/pip…
pip提供的命令不多,但是都很實用
pip命令默認使用的是國外的pypi鏡像(pypi.python.org),安裝慢不說,有時甚至會導致出現超時等網路問題,有時候為了安裝一個包,失敗重試安裝好幾次都不一定成功。所以,使用國內的pypi鏡像,亦即 切換 pip 源 ,這樣速度上更有保證,不失為一種加速pip安裝第三方包的好方法。常用的鏡像站有阿里雲、清華大學等。其中清華大學開源軟體鏡像站是每 5 分鍾同步一次的,比較推薦使用。阿里雲鏡像站的速度也非常快,這也是我現在在使用的。
切換切換 pip 源可以是臨時性的,也可以設置為默認。臨時性的,就是在安裝包時,通過pip命令的 -i 選項指定鏡像源即可。例如,臨時使用阿里雲鏡像站作為 pip 源,可以是這樣安裝:
如果每次安裝時都想要通過鏡像源來安裝,上面的辦法不免有些麻煩。我們可以修改pip的配置文件,將鏡像源寫入到 pip 配置文件中。 對於linux系統 ,修改 ~/.pip/pip.conf 文件 (沒有就創建一個文件夾及文件,文件夾要加「.」,表示是隱藏文件夾):
然後在文件中保存如下內容:
對於windows系統 ,在C:Users文件夾下的用戶目錄(例如如果當前用戶是Administrator則是C:UsersAdministrator)下創建pip文件夾,然後再在此文件夾下創建pip.ini文件,在文件中寫入一下內容:
配置完成後再通過 pip config list 查看pip配置。
我們經常會遇到這樣的開發需求,比如你手頭有多個開發項目,其中項目A要求用python3.7,項目B需要用python3.6,有要求項目A和項目B依賴包相互獨立,互不幹擾。為了滿足這樣的開發需求,我們需要在自己的電腦上安裝多個Python版本,並且項目之間進行環境隔離。因此,我們要想運行這些項目,在工作電腦上就要安裝不同版本的Python。 pyenv 是Python版本管理工具,通過系統修改環境變數來實現Python不同版本的切換,利用它可以在同一台電腦上安裝多個版本的Python,設置目錄級別的Python,還能創建和管理vitual python enviroments。而且所有的設置都是用戶級別的操作,不需要sudo命令。
首先安裝pyenv,如果你是Mac電腦,那麼推薦使用Homebrew來安裝。
要想升級pyenv,則可以執行:
pyenv安裝完成後,需要將$HOME/.pyenv/bin添加到PATH變數前面,這一步非常關鍵。
也可以採用手動安裝的方式,將pyenv檢出到你想安裝的目錄。
添加環境變數,將PYENV_ROOT 指向 pyenv 檢出的根目錄,並向 $PATH 添加 $PYENV_ROOT/bin 以提供訪問 pyenv命令的路徑。這里的 shell 配置文件(~/.bash_profile)依不同系統而需作修改,如果使用 Zsh 則需要相應的配置 ~/.zshrc
在使用 pyenv 之後使用 pip 安裝的第三方模塊會自動安裝到當前使用 python 版本下,不會和系統模塊產生沖突。使用 pip 安裝模塊之後,如果沒有生效,記得使用 pyenv rehash 來更新。
安裝完pyenv,可以安裝Python,首先查看可安裝的Python版本:pyenv install -l,接下來開始安裝Python
執行命令 pyenv versions 查看安裝結果。
可以看到,已經成功安裝了Python,安裝的位置在 /Users/dllwh/.pyenv。
可以看到,3.9.9 前面有一個星號,說明成功切換到了 3.9.9 版本,可以執行一下python來驗證。
Pipenv 是 Python 官方推薦的包管理工具,它綜合了 virtualenv、pip 和 pyenv 三者的功能,你可以使用 pipenv 這一個工具來安裝、卸載、跟蹤和記錄依賴性,並創建、使用和組織你的虛擬環境。
如果你是Mac電腦,那麼推薦使用Homebrew來安裝和升級pipenv:
也可以通過pip來安裝和升級pipenv:
進入到項目目錄中,通過下面的指令為項目創建虛擬環境。
上面的操作,給pipenv_demo這個項目初始化了一個 Python 3.9.9 的虛擬環境,並在項目錄下生成一個項目依賴包文件 Pipefile。如果系統中沒有 3.9.8 版本的Python,pipenv 會調用 pyenv 來安裝對應的 Python 的版本。默認地,虛擬環境會創建在 ~/.local/share/virtualenvs目錄裡面。我們也可以通過 pipenv --venv查看項目的虛擬環境目錄。可以通過 pipenv --rm 刪除虛擬環境。
如果想更改虛擬環境的目錄,可以在 .bashrc 或 .bash_profile 中,設置環境變數WORKON_HOME,指定虛擬環境的目錄所在位置,比如想將虛擬環境放到~/.venvs目錄,則可以執行下面的命令。
如果希望在項目目錄下創建虛擬環境目錄(.venv),需要在 .bashrc 或 .bash_profile 中配置環境變數PIPENV_VENV_IN_PROJECT:
pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。
為項目安裝依賴包到虛擬環境中,使每個項目擁有相互獨立的依賴包,是非常不錯的Python的開發實踐。安裝依賴包到虛擬環境中的方法:
執行完上面的命令後,檢查一下是否安裝成功:
觀察項目的根目錄下,又多了一個 Pipfile.lock 文件。這兩個文件記錄了此項目的依賴包,這兩個文件的區別是 Pipfile 中安裝的包不包含包的具體版本號,而Pipfile.lock 是包含包的具體的版本號的。如果不想產生 Pipfile.lock 文件,在安裝依賴包的時候,加上 –skip-lock 選項即可。
在使用pipenv的時候,常常會安裝過程比較慢,這個是因為pipenv創建的 Pipfile 中默認的Pypi源是python官方的 pypi.python.org/simple。我們國內…
為了避免每次都要指定–pypi-mirror,我一般會在創建好Pipfile以後,將文件中 source 塊下的 url 欄位,設置為國內的 pypi 源,我推薦的是清華的Pypi源或者阿里源,具體設置如下:
如果是要刪除虛擬環境中的第三方包,執行:
用git管理項目時候,要把Pipfile和Pipfile.lock加入版本跟蹤。這樣clone了這個項目的同學,只需要執行:
就可以安裝所有的Pipfile中 [packages]部分列出來的包了,並且自動為項目在自己電腦上創建了虛擬環境。
上面的方法都是安裝Pipfile中列出來的第三方包的最新版本,如果是想安裝Pipfile.lock中固定版本的第三方依賴包,需要執行:
如果項目之前使用requirements.txt來管理依賴的,那麼使用pipenv安裝所有依賴可以採用類似pip的方法:
虛擬環境創建好了之後,就可以在裡面進行開發了。如果在命令行下開發,則在項目目錄下執行 pipenv shell ,就進入到了虛擬環境中,在這個環境中,已經包含安裝過的所有依賴包了,接下來就可以利用這些依賴包進行開發工作了。如果是用Pycharm進行開發,就更簡單了,直接用Pycharm打開項目即可。可以從Pycharm中的左側導航欄裡面看到External Libraries顯示的是虛擬環境中的Python解釋器了。
在虛擬環境中執行開發好的程序,有兩種方式,一種是前面提到的先執行pipenv shell進入到虛擬環境後,再執行python程序;另一種方式,則是執行pyenv run,比如在虛擬環境中執行基於pytest框架編寫的測試用例,只需要執行下面的命令即可:
作者:獨淚了無痕
鏈接:https://juejin.cn/post/7063699409703272485
7. 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鏡像內文件系統的時區設置,默認是格林尼治標准時區,所以需要設置為所在的時區。