欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

docker技術(shù)能不能解決不同Python版本開發(fā)的問題

docker技術(shù)能不能解決不同Python版本開發(fā)的問題?

Python應(yīng)用程序通常會(huì)使用不在標(biāo)準(zhǔn)庫(kù)內(nèi)的軟件包和模塊。應(yīng)用程序有時(shí)需要特定版本的庫(kù),因?yàn)閼?yīng)用程序可能需要修復(fù)特定的錯(cuò)誤,或者可以使用庫(kù)的過時(shí)版本的接口編寫應(yīng)用程序。

這意味著一個(gè)Python安裝可能無(wú)法滿足每個(gè)應(yīng)用程序的要求。如果應(yīng)用程序A需要特定模塊的1.0版本但應(yīng)用程序B需要2.0版本,則需求存在沖突,安裝版本1.0或2.0將導(dǎo)致某一個(gè)應(yīng)用程序無(wú)法運(yùn)行。

這個(gè)問題的解決方案是創(chuàng)建一個(gè) virtual environment,一個(gè)目錄樹,其中安裝有特定Python版本,以及許多其他包。

然后,不同的應(yīng)用將可以使用不同的虛擬環(huán)境。 要解決先前需求相沖突的例子,應(yīng)用程序 A 可以擁有自己的 安裝了 1.0 版本的虛擬環(huán)境,而應(yīng)用程序 B 則擁有安裝了 2.0 版本的另一個(gè)虛擬環(huán)境。 如果應(yīng)用程序 B 要求將某個(gè)庫(kù)升級(jí)到 3.0 版本,也不會(huì)影響應(yīng)用程序 A 的環(huán)境。

1. 創(chuàng)建虛擬環(huán)境

用于創(chuàng)建和管理虛擬環(huán)境的模塊稱為 venv。venv 通常會(huì)安裝你可用的最新版本的 Python。如果您的系統(tǒng)上有多個(gè)版本的 Python,您可以通過運(yùn)行 python3 或您想要的任何版本來(lái)選擇特定的Python版本。

要?jiǎng)?chuàng)建虛擬環(huán)境,請(qǐng)確定要放置它的目錄,并將 venv 模塊作為腳本運(yùn)行目錄路徑:

python3 -m venv tutorial-env

如果它不存在,這將創(chuàng)建 tutorial-env 目錄,并在其中創(chuàng)建包含Python解釋器,標(biāo)準(zhǔn)庫(kù)和各種支持文件的副本的目錄。

虛擬環(huán)境的常用目錄位置是 .venv。 這個(gè)名稱通常會(huì)令該目錄在你的終端中保持隱藏,從而避免需要對(duì)所在目錄進(jìn)行額外解釋的一般名稱。 它還能防止與某些工具所支持的 .env 環(huán)境變量定義文件發(fā)生沖突。

創(chuàng)建虛擬環(huán)境后,您可以激活它。

在Windows上,運(yùn)行:

tutorial-env\Scripts\activate.bat

在Unix或MacOS上,運(yùn)行:

source tutorial-env/bin/activate

(這個(gè)腳本是為bash shell編寫的。如果你使用 csh 或 fish shell,你應(yīng)該改用 activate.csh 或 activate.fish 腳本。)

Activating the virtual environment will change your shell's prompt to show what virtual environment you're using, and modify the environment so that running python will get you that particular version and installation of Python. For example:

$ source ~/envs/tutorial-env/bin/activate (tutorial-env) $ python Python 3.5.1 (default, May 6 2016, 10:59:36) ... >>> import sys >>> sys.path ['', '/usr/local/lib/python35.zip', ..., '~/envs/tutorial-env/lib/python3.5/site-packages'] >>>

2. 使用pip管理包

你可以使用一個(gè)名為 pip 的程序來(lái)安裝、升級(jí)和移除軟件包。默認(rèn)情況下 pip 將從 Python Package Index <https://pypi.org> 安裝軟件包。你可以在瀏覽器中訪問 Python Package Index 或是使用 pip 受限的搜索功能:

(tutorial-env) $ pip search astronomy skyfield - Elegant astronomy for Python gary - Galactic astronomy and gravitational dynamics. novas - The United States Naval Observatory NOVAS astronomy library astroobs - Provides astronomy ephemeris to plan telescope observations PyAstronomy - A collection of astronomy related tools for Python. ...

pip 有許多子命令:“search”、“install”、“uninstall”、“freeze”等等。(請(qǐng)參閱 安裝 Python 模塊 指南以了解 pip 的完整文檔。)

您可以通過指定包的名稱來(lái)安裝最新版本的包:

(tutorial-env) $ pip install novas Collecting novas Downloading novas-3.1.1.3.tar.gz (136kB) Installing collected packages: novas Running setup.py install for novas Successfully installed novas-3.1.1.3

您還可以通過提供包名稱后跟 == 和版本號(hào)來(lái)安裝特定版本的包:

(tutorial-env) $ pip install requests==2.6.0 Collecting requests==2.6.0 Using cached requests-2.6.0-py2.py3-none-any.whl Installing collected packages: requests Successfully installed requests-2.6.0

如果你重新運(yùn)行這個(gè)命令,pip 會(huì)注意到已經(jīng)安裝了所請(qǐng)求的版本并且什么都不做。您可以提供不同的版本號(hào)來(lái)獲取該版本,或者您可以運(yùn)行 pip install --upgrade 將軟件包升級(jí)到最新版本:

(tutorial-env) $ pip install --upgrade requests Collecting requests Installing collected packages: requests Found existing installation: requests 2.6.0 Uninstalling requests-2.6.0: Successfully uninstalled requests-2.6.0 Successfully installed requests-2.7.0

pip uninstall 后跟一個(gè)或多個(gè)包名稱將從虛擬環(huán)境中刪除包。

pip show 將顯示有關(guān)特定包的信息:

(tutorial-env) $ pip show requests --- Metadata-Version: 2.0 Name: requests Version: 2.7.0 Summary: Python HTTP for Humans. Home-page: http://python-requests.org Author: Kenneth Reitz Author-email: me@kennethreitz.com License: Apache 2.0 Location: /Users/akuchling/envs/tutorial-env/lib/python3.4/site-packages Requires:

pip list 將顯示虛擬環(huán)境中安裝的所有軟件包:

(tutorial-env) $ pip list novas (3.1.1.3) numpy (1.9.2) pip (7.0.3) requests (2.7.0) setuptools (16.0)

pip freeze` 將生成一個(gè)類似的已安裝包列表,但輸出使用 pip install 期望的格式。一個(gè)常見的約定是將此列表放在 requirements.txt 文件中:

(tutorial-env) $ pip freeze > requirements.txt (tutorial-env) $ cat requirements.txt novas==3.1.1.3 numpy==1.9.2 requests==2.7.0

然后可以將 requirements.txt 提交給版本控制并作為應(yīng)用程序的一部分提供。然后用戶可以使用 install -r 安裝所有必需的包:

(tutorial-env) $ pip install -r requirements.txt Collecting novas==3.1.1.3 (from -r requirements.txt (line 1)) ... Collecting numpy==1.9.2 (from -r requirements.txt (line 2)) ... Collecting requests==2.7.0 (from -r requirements.txt (line 3)) ... Installing collected packages: novas, numpy, requests Running setup.py install for novas Successfully installed novas-3.1.1.3 numpy-1.9.2 requests-2.7.0

pip 有更多選擇。有關(guān) pip 的完整文檔,請(qǐng)參閱 安裝 Python 模塊 指南。當(dāng)您編寫一個(gè)包并希望在 Python 包索引中使它可用時(shí),請(qǐng)參考 分發(fā) Python 模塊 指南。