亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Virtualenv + SublimeText 的Python開(kāi)發(fā)環(huán)境

Airmusic / 2113人閱讀

摘要:最近在上使用遇到了問(wèn)題,由于使用了庫(kù),其同時(shí)存在于和,的庫(kù)中,版本為,而最新的為。建議使用參數(shù)將上的開(kāi)發(fā)目錄掛載到容器中,這樣僅僅使用了容器提供的環(huán)境,而代碼跟容器本身并沒(méi)有關(guān)系。支持多種,,,之類(lèi),的確非常方便。

最近在Mac上使用Python遇到了問(wèn)題,由于使用了pyOpenSSL庫(kù),其同時(shí)存在于/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/Library/Python/2.7/site-packages,Mac python的庫(kù)中,pyOpenSSL版本為0.13,而最新的pyOpenSSL為0.15.1。使用sudo pip install --upgrade pyopenssl==0.15.1無(wú)法將Mac python的庫(kù)升級(jí),所以無(wú)法使用0.15.1的pyopenssl。

嘗試了Docker, vagrant, virtualenv,這幾個(gè)東西都可以實(shí)現(xiàn)創(chuàng)建一個(gè)較為干凈的python開(kāi)發(fā)環(huán)境,在嘗試了他們之后在這里分享一下心得,僅供參考,這里假定讀者也有以上工具的相關(guān)經(jīng)驗(yàn),不喜勿噴。

1. 基于Docker

其實(shí)docker的出現(xiàn),一定程度上就是為了解決這類(lèi)問(wèn)題,我把所有的代碼,庫(kù)文件,二進(jìn)制,配置文件之類(lèi)的,放到集裝箱里,一并打包給你,所以你就得到了一個(gè)跟我環(huán)境一模一樣的環(huán)境,不管是在開(kāi)發(fā),測(cè)試還是生成環(huán)境,對(duì)于應(yīng)用來(lái)說(shuō),周?chē)沫h(huán)境都一模一樣,減少了部署,遷移之類(lèi)的不必要的麻煩。

如果想要用Docker搭建一個(gè)Python開(kāi)發(fā)環(huán)境,極為簡(jiǎn)單,只需要去官方下載Python的docker image即可,啟動(dòng)后,你可能需要安裝一些包,然后記得commit保存下你對(duì)鏡像的修改,下次啟動(dòng)或者把鏡像導(dǎo)給你的同事,得到的環(huán)境都是一模一樣的。

但是千萬(wàn)記得,別把你的代碼直接放到docker image中,這是個(gè)很不好的選擇,萬(wàn)一哪次忘記commit就躲墻角里哭去吧。

建議使用-v參數(shù)將Host上的開(kāi)發(fā)目錄掛載到容器中,這樣僅僅使用了容器提供的環(huán)境,而代碼跟容器本身并沒(méi)有關(guān)系。

OK,說(shuō)到這,你可能覺(jué)得我說(shuō)了一大堆的廢話(huà),的確廢話(huà),因?yàn)檫@一切在Docker中太簡(jiǎn)單了。

2. 基于Vagrant

Vagrant是什么鬼?前段時(shí)間我一直想問(wèn)這個(gè)問(wèn)題,后來(lái)用RancherOS,官方推薦用這貨來(lái)啟動(dòng)RancherOS,就試了一下。這貨實(shí)際上就是一個(gè)Wrapper,你看到的是統(tǒng)一的接口,但是其背后是各種虛擬機(jī),默認(rèn)是VirtualBox。

說(shuō)白了,用Vagrant享受的服務(wù)是虛擬機(jī)提供的,其box的概念,實(shí)際上就是虛擬機(jī)的鏡像文件。Vagrant支持多種provider,VB,VMWare,AWS之類(lèi),的確非常方便。它對(duì)環(huán)境的打包比Docker更兇猛,直接打包的Virtual machine,和Vagrant的配置,想來(lái)并不是那么高效,但是的確方便可行。

如何在Vagrant上,也就是虛擬技術(shù)搭建Python環(huán)境,就變得很簡(jiǎn)單了,就跟在一個(gè)獨(dú)立的系統(tǒng)上一樣,又是一大堆的廢話(huà)就不在重復(fù)了

3. Buildout

一個(gè)致力于給Python提供友好干凈的開(kāi)發(fā)環(huán)境的工具,網(wǎng)上說(shuō)這廝已經(jīng)到了機(jī)械時(shí)代,virtualenv+pip還處于手工時(shí)代,但是個(gè)人感覺(jué)比virtualenv+pip還復(fù)雜,看了一眼,就不想看了

4. Virtualenv

恩,這家伙差不多解決了我的問(wèn)題,所以非常有好感。

Mac上可以通過(guò)pip或代碼安裝virtualenv,不詳細(xì)說(shuō)了。安裝之后,通過(guò)命令創(chuàng)建一個(gè)新的環(huán)境,假定我們要?jiǎng)?chuàng)建的環(huán)境是叫test-cloud-env,執(zhí)行如下命令:

$ virtualenv test-cloud-env

這會(huì)再當(dāng)前目錄創(chuàng)建test-cloud-env這個(gè)目錄,并在其下創(chuàng)建bin/,lib/,include/

接下來(lái),你會(huì)發(fā)現(xiàn)有不少東西放在了bin/目錄下,其中有python的解釋器,以及一些腳本以及我們的activate腳本?,F(xiàn)在,我們馬上就要?jiǎng)?chuàng)建一個(gè)虛擬的獨(dú)立Python開(kāi)發(fā)環(huán)境了,一個(gè)命令也就搞定,為了有個(gè)直觀(guān)的體驗(yàn),請(qǐng)看以下實(shí)例:

$ env python -c "import OpenSSL as a; print a.__version__"
0.13.1
$ source test-cloud-env/bin/activate
$ env python -c "import OpenSSL as a; print a.__version__"
0.15.1

看到區(qū)別了吧,啟用之前Python使用的是系統(tǒng)的庫(kù),啟用之后使用新創(chuàng)建的庫(kù)。

如何給這個(gè)env安裝依賴(lài)庫(kù)?我使用了requirements.txt來(lái)保存需要安裝的庫(kù)及其版本,剩下的交給pip去搞定就行了

$ cat requirements.txt

pexpect
pyOpenSSL == 0.15.1
requests

$ pip install -r requirements.txt

安裝完成后,一個(gè)虛擬的獨(dú)立的Python開(kāi)發(fā)環(huán)境就OK了。你可以為不同項(xiàng)目創(chuàng)建不同的env。

5. something else?

寫(xiě)到這就打住就沒(méi)什么意思了,網(wǎng)上不是都搜得到么。。。

我比較喜歡Sublime Text,定制性比較高,已經(jīng)成為我主要的編輯器了。為了能夠讓編輯器里的代碼直接在Sublime Text里使用我們定制的env執(zhí)行,我們得開(kāi)始定制一個(gè)build system。

打開(kāi)編輯器,Tools->Build System->New Build System,添加代碼:

{
    "cmd": ["/path/test-cloud/pyenv.sh", "$file"],
    "file_regex": "^[ ]*File "(...*?)", line ([0-9]*)",
    "selector": "source.python"
}

保存為Python-Virtualenv.sublime-build。

這里用到一個(gè)腳本pyenv.sh,這個(gè)腳本所做的事情就是激活env,然后執(zhí)行當(dāng)前腳本,我們?cè)倏纯磒yenv.sh的內(nèi)容

#!/bin/bash

pyfile=$1

source /path/to/env/bin/activate
# echo $PWD
env python -u $pyfile

記得給這個(gè)腳本加個(gè)可執(zhí)行權(quán)限。最后在sublime text 的build system里選擇Python-Virtualenv,然后你的腳本就會(huì)再自己定制的env中執(zhí)行了。

另外,對(duì)于使用其他環(huán)境的Python環(huán)境,比如Docker之類(lèi),同樣可以通過(guò)定制Build system來(lái)實(shí)現(xiàn)遠(yuǎn)程執(zhí)行,具體可以參照我的另一篇文章?;舅悸肥且粯拥?,隨意定制。

virtualenv還有個(gè)管理器virtualenvwrapper,個(gè)人覺(jué)得用處不大,因?yàn)関irtualenv實(shí)在是太輕量級(jí)了,以至于沒(méi)有必要折騰復(fù)用,當(dāng)然大型項(xiàng)目除外,呵呵。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/37573.html

相關(guān)文章

  • Linux下使用 virtualenv 虛擬獨(dú)立 Python 環(huán)境

    摘要:另一個(gè)好處是,虛擬環(huán)境不需要管理員權(quán)限。當(dāng)一個(gè)虛擬環(huán)境被激活后,程序的位置會(huì)被添加到中。比如,安裝到虛擬環(huán)境中,使用如下命令安裝過(guò)程會(huì)將和它的依賴(lài)集安裝到虛擬環(huán)境中。 簡(jiǎn)介 在開(kāi)發(fā)不同的應(yīng)用時(shí),我們可能需要不同的 Python 版本,同時(shí)可能還需要處理包的依賴(lài)、版本和間接權(quán)限問(wèn)題。在同系統(tǒng)中,要解決這些問(wèn)題往往非常棘手。在 Python 的開(kāi)發(fā)環(huán)境中,為解決這樣的問(wèn)題最常用的方法是使用...

    付永剛 評(píng)論0 收藏0
  • 使用 pyenv + virtualenv 打造多版本 Python 開(kāi)發(fā)環(huán)境

    摘要:本文最早發(fā)表于個(gè)人博客配置環(huán)境在工作開(kāi)發(fā)中,一直使用來(lái)管理的包環(huán)境。很好的解決了不同項(xiàng)目使用不同包的需求。建議路徑為添加環(huán)境變量。設(shè)置面向程序的本地版本,通過(guò)將版本號(hào)寫(xiě)入當(dāng)前目錄下的文件的方式。若找不到,就用版本。 本文最早發(fā)表于個(gè)人博客Pylixmwiki: http://pylixm.cc 配置環(huán)境: CentOS release 6.8 pyenv 20160509 在工作開(kāi)...

    JerryWangSAP 評(píng)論0 收藏0
  • 創(chuàng)建Python虛擬環(huán)境——上

    摘要:如果應(yīng)用需要,應(yīng)用需要怎么辦這種情況下,每個(gè)應(yīng)用需要各有一個(gè)獨(dú)立的運(yùn)行環(huán)境。虛擬環(huán)境是一個(gè)創(chuàng)建隔離開(kāi)發(fā)環(huán)境的工具。創(chuàng)建一個(gè)包含所有必要的可執(zhí)行文件的文件夾,用來(lái)使用工程所需要的依賴(lài)包。 Python應(yīng)用程序開(kāi)發(fā)中,如果系統(tǒng)只安裝了Python3.6.6。當(dāng)開(kāi)發(fā)者使用pip安裝第三方包時(shí),所安裝的包會(huì)進(jìn)入Python安裝目錄下的site-packages目錄中。Python的優(yōu)勢(shì)之一是有...

    ctriptech 評(píng)論0 收藏0
  • Python多版本切換工具-Pyenvvirtualenv及Anaconda科學(xué)計(jì)算環(huán)境配置

    摘要:為了安裝科學(xué)計(jì)算環(huán)境,控制好版本,今天上午總算折騰好了。切換和使用新的虛擬環(huán)境這樣就能切換為這個(gè)版本的虛擬環(huán)境。通過(guò)輸入查看現(xiàn)在版本,可以發(fā)現(xiàn)處于虛擬環(huán)境下了。指定包的版本多個(gè)版本并存,尤其是和的并存。下面用創(chuàng)建一個(gè)名叫的版本為的環(huán)境。 為了安裝Anaconda科學(xué)計(jì)算環(huán)境,控制好python版本,今天上午總算折騰好了。 學(xué)習(xí)python有時(shí)希望在python2.7環(huán)境下,有時(shí)希望在...

    rozbo 評(píng)論0 收藏0
  • 【機(jī)器學(xué)習(xí)】深度學(xué)習(xí)開(kāi)發(fā)環(huán)境搭建

    摘要:打開(kāi)命令提示符輸入出現(xiàn)下面提示說(shuō)明已經(jīng)安裝成功安裝添加的環(huán)境變量環(huán)境變量中加上的路徑,例如。在命令提示符輸入安裝完成,建立一個(gè)全新的環(huán)境,例如我們想建立一個(gè)叫的開(kāi)發(fā)環(huán)境,路徑為,那么我們輸入安裝完成。 工欲善其事,必先利其器。首先我們需要花費(fèi)一些時(shí)間來(lái)搭建開(kāi)發(fā)環(huán)境。 1.安裝python。python是人工智能開(kāi)發(fā)首選語(yǔ)言。 2.安裝virtualenv。virtualenv可以為一個(gè)...

    galaxy_robot 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<