Python version control on Mac

MAC INSTALL PYTHON AND PACKAGE MANAGER

​ Mac 系统10.x 之后会自带Python,它适合用于学习,不适合用来开发,因为一旦系统升级就有可能Python版本就会发生改变;Python是和系统绑定的,Homebrew是包管理器,可以永远获取最新版本的Python和pip以及Setuptools;改变OS X的Python版本有可能会触发系统隐藏的bug。

​ brew -> xcode -> python/python3 -> virtualenv

brew install python

brew install python3

pip install virtualenv

mkdir -p ~/Projects ~/Virtualenv

‘将pip限制在虚拟环境中,这样virtualenv默认使用pip管理包,且只能使用在激活环境中使用,而不会影响系统python的环境’

vim ~/.bash_profile

​ Add new one line:export PIP_REQUIRE_VIRTUALENV=true

source ~/.bash_profile

cd ~/Virtualenvs

‘创建两个版本的项目,分别使用的时python2和python3’

virtualenv foobar

virtualenv -p python3 foobar-py3

'升级全局到包'

vim ~/.bashrc

Add one new line: gpip(){ PIP_REQUIRE_VIRTUALENV="" pip "$@" }

gpip install --upgrade pip setuptools wheel virtualenv


​ 应该安装类似于Setuptools之类用来安装第三方的Python类库。

安装Python需要GCC的支持,GCC用XCode下载。

Mac OSX 缺一个包管理器,Homebrew能弥补这个空白。

安装 Homebrew 可以去 官网 首页获取安装命令,一行即可完成。 brew install python

Homebrew 会替你安装 Setuptools 和 pip ,Setuptools 可以用 easy_install 替你下载和安装网络上的相应的Python包,也可以很简单的通过网络安装兼容Python版本的包。pip 是更容易安装和管理Python包的工具,相比于 easy_install ,更推荐这个pip。 在某些方面它比 easy_install 更好,且积极维护着。

虚拟环境是通过创建虚拟的Python环境,让在不同位置的不同项目保持独立性的工具。

​ virtualenv 是能创建分离的Python环境的工具。virtualenv创建一个文件夹来包含Python项目执行所需要的包,安装 pip install virtualenv

virtual 基本用法

​ 1. 为项目创建虚拟的环境

cd my_project_folder

virtualenv venv OR virtualenv -p /usr/bin/python2.7 venv

​ 'virtualenv venv' 将在当前目录创建包含Python可执行文件的文件夹,和一份pip类库的复制,这样可以用pip来安装其它的包。virtualenv的环境名可以是任意的,这里是env;不指定名字将会把文件放在当前所在的目录,用 -p 可以指定python 环境。

​ 使用 --no-site-packages 该参数,系统全局安装的包将不会被带入到新建的环境中,该参数走virtualenv 1.7版本之后是勾选的。

​ 2.激活该环境

source venv/bin/activate

​ 激活环境成功的话,bash提示符就会发生改变,那么现在用pip安装的包都将在这个env环境中。

pip install requests

​ 3.关闭环境

deactivate

​ 这将会将你带回到系统默认的Python解释器。

那么删除虚拟环境,只要删除它的文件夹就好。

Mac OS中主要有三种包管理工具:MacPorts,Homebrew,Fink。

1. MacPorts:因为 Mac OS 源自 BSD,因此将 BSD 中的 Port 移植到 OS 成为 MacPorts 就一点不奇怪。MacPorts 会独立于 OS 自建一套仓库树,OS 的包执行目录为 /usr/local,而 MacPorts 的包执行目录为 /opt/local。MacPorts 尽量不影响系统现有程序,自然也就尽量少复用系统已有程序。MacPorts 安装包的过程是下载该程序的所有源文件及其依赖包,然后在本地进行 Build 生成最终的可执行文件。这样做的好处是在系统中存在一套独立的生态环境,从而不影响系统自身的生态环境,缺点就是浪费了系统自身的生态资源。

2. Homebrew:在 Lion 之后兴起的包管理工具,工作方式与 MacPorts 类似,下载源代码然后本地 Build。不同之处在于 Homebrew 采取与 MacPorts 截然相反的态度,对系统资源是最大程度的利用,因此可以说 Homebrew 是直接对现有系统生态环境进行修改,所有包也是直接安装到现有的生态环境中,这样做的好处是节约了系统资源,但缺点是每一次操作都是直接对系统进行修改,严重依赖和影响现有系统。

3. Fink:基于 Debian 的 packaging tools,它下载的都是已编译后的二进制可执行文件(或源码),因此无需本地编译,即下即用。缺点是所有包都需要 Fink 预先编译,导致更新速度跟不上。


python version manager ??? virtualenv pyenv vagrant Anaconda pip Anaconda

Pythonbrew: Not maintain anymor.

Pyenv:


​```

    brew update

    brew install pyenv

    pyenv --help

    pyenv commands

    brew install pyenv-virtualenv

    pyenv install --list

    pyenv install x.x.x     #install python with version number

    pyenv versions      #list current python version

    pyenv global system     #checkout the python to system  version

    pyenv virtualenv x.x.x myvenv   #create python version with named "myenv"

    pyenv virtualenvs       #show python virtualenv

    pyenv shell myvenv  #active python virtualenv

Virtualenv 是一个虚拟环境程序,可以把开发环境隔离。基本思想是建立不同的环境目录,其中装有独立的各类包,甚至也可以是独立的不同版本python程序。

ref:

VirtualEnv 和Pip 构建Python的虚拟工作环境 -v2

为MAC打造舒适的Python开发环境

Python Development Environment on MacOS X Yosemite 10.10

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 1. 介绍 首先让我们来看看TensorFlow! 但是在我们开始之前,我们先来看看Python API中的Ten...
    JasonJe阅读 11,719评论 1 32
  • 本文为《爬着学Python》系列第十三篇文章。 Python能在这几年火起来,靠的不是网上一大片的爬虫和服务器后端...
    SyPy阅读 4,788评论 0 5
  • 5.2 Mac OS安装说明 译者:Python 文档协作翻译小组,原文:Mac OS Installation ...
    布客飞龙阅读 1,933评论 0 6
  • footer定位底部起初我的打算是用绝对定位,脱离文本流,参照浏览器左上角定位,设置TRBL作为原点此时我的代码如...
    DecadeHeart阅读 8,736评论 0 0
  • 今天,大风吹,心要碎,莫名的难过!找了一席安静之地,专门用简书给andy发了一篇之前课程的总结,开头写到如果能帮到...
    q子在川上y阅读 245评论 0 1