mac系统自带python执行环境保护这项_在Mac OS X上控制Python-设置环境和库

virutalenv是一个很好的工具,对于管理大多数平台上的多个Python实例非常有用。不过,在Mac OS X上,情况更为复杂,因为使用框架构建使得即使是同一个Python主版本的多个实例也很常见。我建议您在深入研究virtualenv之前,首先理解并熟悉如何管理Mac OS X上安装的框架。

“/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/是吗

是的,这是Python Mac OS X框架构建中的默认位置。Mac OS X上的大多数Python发行商都使用一个框架构建,每个框架构建通常使用不同的根,因为它使支持多个版本和将为特定Python实例安装的所有站点包放在一个地方变得更简单。

对于MacOSX10.6,苹果提供了一个Python2.6(根位于/System/Library/Frameworks/Python.framework,符号链接到/usr/bin/python2.6)和一个Python2.5(与MacOSX10.5兼容——这就是您看到的/usr/bin/python2.5)。org Mac OS X安装程序安装到/Library/Frameworks/Python.framework。MacPorts使用/opt/local/Library/Frameworks/Python.framework。

框架包括一个bin目录(在框架中的../Versions/x.x/bin);这通常是安装包脚本的默认位置。它也是放置到解释器二进制文件的符号链接的地方。

下面介绍一个python.org风格的框架,其中安装了多个版本的python:$ cd /Library/Frameworks/Python.framework/Versions/

$ ls -l

total 8

drwxrwxr-x 8 root admin 340 Dec 23 2008 2.5/

drwxrwxr-x 8 root admin 340 Aug 10 21:42 2.6/

drwxrwxr-x 8 root admin 340 Jul 3 12:24 2.7/

drwxrwxr-x 7 root admin 306 Mar 23 17:42 3.1/

drwxrwxr-x 7 root admin 306 Aug 10 22:14 3.2/

lrwxr-xr-x 1 root admin 3 Aug 10 21:47 Current@ -> 2.6

$ cd 2.6

$ ls -l

total 7776

lrwxr-xr-x 1 root admin 17 Aug 10 21:47 Headers@ -> include/python2.6

drwxrwxr-x 3 root admin 102 Aug 10 21:42 Mac/

-r-xrwxr-x 1 root admin 3973552 Aug 10 21:41 Python*

drwxrwxr-x 4 root admin 170 Aug 10 21:48 Resources/

drwxrwxr-x 2 root admin 578 Aug 12 15:19 bin/

drwxrwxr-x 3 root admin 102 Aug 10 21:42 include/

drwxrwxr-x 3 root admin 646 Aug 10 21:43 lib/

drwxrwxr-x 3 root admin 102 Aug 10 21:41 share/

$ ls -l bin

total 264

-rwxrwxr-x 1 root admin 150 Aug 10 21:41 2to3*

-rwxr-xr-x 1 nad admin 360 Aug 12 15:19 easy_install*

-rwxr-xr-x 1 nad admin 368 Aug 12 15:19 easy_install-2.6*

lrwxr-xr-x 1 root admin 7 Aug 10 21:47 idle@ -> idle2.6

-rwxrwxr-x 1 root admin 138 Aug 10 21:41 idle2.6*

lrwxr-xr-x 1 root admin 8 Aug 10 21:47 pydoc@ -> pydoc2.6

-rwxrwxr-x 1 root admin 123 Aug 10 21:41 pydoc2.6*

lrwxr-xr-x 1 root admin 9 Aug 10 21:47 python@ -> python2.6

lrwxr-xr-x 1 root admin 16 Aug 10 21:47 python-config@ -> python2.6-config

-rwxrwxr-x 1 root admin 29584 Aug 10 21:43 python2.6*

-rwxrwxr-x 1 root admin 1463 Aug 10 21:42 python2.6-config*

lrwxr-xr-x 1 root admin 10 Aug 10 21:47 pythonw@ -> pythonw2.6

-rwxrwxr-x 1 root admin 29584 Aug 10 21:43 pythonw2.6*

lrwxr-xr-x 1 root admin 11 Aug 10 21:47 smtpd.py@ -> smtpd2.6.py

-rwxrwxr-x 1 root admin 18272 Aug 10 21:41 smtpd2.6.py*

这里有一个MacPortsbin包括一些附加的站点包:$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6

$ ls -l bin

total 952

-rwxr-xr-x 2 root wheel 160 Jul 15 01:56 2to3*

-rwxr-xr-x 2 root wheel 1541 Jun 8 19:59 apirst2html.py*

-rwxr-xr-x 2 root wheel 363 Oct 5 2009 bdist_mpkg*

[...]

-rwxr-xr-x 2 root wheel 211 Jun 2 12:45 django-admin.py*

-rwxr-xr-x 2 root wheel 410 Jul 15 17:30 easy_install*

-rwxr-xr-x 2 root wheel 418 Jul 15 17:30 easy_install-2.6*

[...]

-rwxr-xr-x 2 root wheel 368 Jun 24 02:00 pip*

-rwxr-xr-x 1 root wheel 342 Sep 18 2009 pkginfo*

[...]

lrwxr-xr-x 1 root wheel 9 Jul 15 01:58 python@ -> python2.6

lrwxr-xr-x 1 root wheel 16 Jul 15 01:58 python-config@ -> python2.6-config

-rwxr-xr-x 2 root wheel 24932 Jul 15 01:57 python2.6*

-rwxr-xr-x 2 root wheel 1473 Jul 15 01:57 python2.6-config*

[...]

如果您使用python.org安装程序或MacPorts安装2.7或3.1 Pythons,那么它们都是根在/Library/Frameworks或/opt/local/Library/Frameworks下的,并且将很高兴与其他版本共存。要成功使用框架安装,您需要管理shell PATH。特别是,您应该确保要使用的Python的frameworkbin目录位于您的PATH目录中。因此,对于MacPorts,在~/.bash_profile中类似这样:export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:/opt/local/bin:$PATH

或者对于python.org安装程序:export PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH

此外,通常需要为您使用的每个Python实例安装您最喜欢的Python包管理加载项的单独版本(例如pip或Distribute或setuptools中的easy_install命令)。每个脚本都安装到默认脚本目录(即frameworkbin目录)。MacPorts会在安装其版本的软件包时自动处理这个问题(sudo port install py26-pip或sudo port install py31-distribute)。注意,Apple在Pythons中提供了一组easy_install链接,它们将软件包安装到/Library/Python。您需要确保使用适合您的Python实例的easy_install或pip。确保实例的框架bin目录位于PATH的第一个目录中,这样可以确保。

注意,如果使用MacPorts,则可以使用其python_select命令来管理/opt/local/bin/python指向的Python实例。然后,如果路径列表中的/opt/local/bin比其他带有python的目录显示得更早,它将控制哪个是默认的python。但是您确实需要通过添加框架bin目录来管理路径,因此python_select通常不是那么有用。

使用MacPorts(或类似的基础广泛的分发服务器)的另一个积极方面是,它提供了许多流行的Python包,包括处理构建和链接未随Mac OS X提供的第三方C库的偶然混乱细节,由于MySQL客户端库和libjpeg,Mac OS X上的MySQLdb和PIL包经常是绊脚石,但是MacPorts使一切正常变得容易得多。但是您可以选择直接使用MacPorts(sudo port py26-pil)或通过pip(sudo pip install pil)或easy_install安装,也可以下载源代码,然后自己安装(sudo python setup.py ...)。而且由于所有这些方法都在幕后使用Python的Distutils来完成这些肮脏的工作,所以所有这些方法最终都将安装一个包的文件位于给定Python实例的同一位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值