当前位置: 首页 > 面试题库 >

在Mac OS X上控制Python-设置环境和库

段干玺
2023-03-14
问题内容

在Ubuntu Linux上开始使用Python开始学习后,我已经在Mac(目前为Mac OS X
10.6)上进行了大部分持续工作,这已经有一段时间了。不幸的是,我忽略了适当地注意如何在其中安装Python并最终导致:

  • Python 2.6.1(Mac默认版本?)/usr/bin也位于(也是2.5.4,我不确定它是如何到达的)
  • 通过MacPorts在中安装了Python 2.6.5 /opt/local/bin/。这是我的默认
  • pip用来安装库,这些库最终会出现在/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/不合常规的地方(例如-SRSLY?)
  • 否则,主要是TextMate和Git用于版本控制。Django和Google App Engine等…

现在,我准备设置2.7和3.2,但我对事物的偶然状态不满意。那么,您最喜欢的组织代码和库的方法是什么,又如何使Mac努力提交呢?

我想继续使用pip,但是希望有更多的控制权,或者至少了解要安装哪个版本的库并可以从何处访问:我在py.test通过via安装时遇到了问题,pip只能从中加载过时的2.6.1
Python,而不是我当前的2.6.5。MacPorts具有python_select,但并不过分:

reason: chris$ python_select -l
Available versions:
current none python26 python26-apple

我问过的大多数Python人员都不使用MacPorts(我不太喜欢),而是使用的库存Mac Python
python.org。我也听说过建议virtualenv系统地使用该建议,那么,一个好的实际介绍的链接是什么?


问题答案:

virutalenv是一个很棒的工具,对于在大多数平台上管理多个Python实例非常有用。但是,在Mac OS
X上,事情变得更加复杂,因为使用框架构建使遇到相同主版本Python的多个实例变得很普遍。我建议您先深入了解并熟悉如何在Mac OS
X上管理框架安装virtualenv

/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site- packages/-SRSLY?”

是的,这是Python Mac OS X框架内部版本的默认位置。在Mac OS X上,大多数Python发行商都使用 架构 ,每个 框架
通常使用不同的根目录,因为这样可以更轻松地支持多个版本,并且可以将为特定Python实例安装的所有站点包都放在一个地方。

对于Mac OS X 10.6,Apple提供了Python
2.6(植根于/System/Library/Frameworks/Python.framework且符号链接到/usr/bin/python2.6)以及Python
2.5(与Mac OS X 10.5兼容-就是这样/usr/bin/python2.5)。python.org Mac OS
X安装程序安装到/Library/Frameworks/Python.framework。MacPorts使用/opt/local/Library/Frameworks/Python.framework

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

这是一个安装了多个Python版本的python.org风格的框架:

$ 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*

这是MacPorts,bin其中包括许多其他站点包:

$ 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
Python,它们全部植根于/Library/Frameworks或,/opt/local/Library/Frameworks并且可以与其他版本愉快地共存。要成功使用框架安装,您需要管理shell
PATH。特别是,您应确保bin要使用的Python的框架目录位于上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包管理加载项(如独立的版本pipeasy_install从命令Distributesetuptools)为您使用的每个Python实例。每个都安装到默认脚本目录(即框架bin目录)中。MacPorts在安装其版本的软件包(sudo port install py26-pipsudo port install py31-distribute)时会自动进行处理。请注意,Apple为Python提供了一组easy_install链接/usr/bin,它们将软件包安装到/Library/Python。您需要确保对您的Python实例使用easy_installpip。确保实例的框架bin目录位于PATH确保的第一位。

请注意,如果您使用MacPorts,则 可以
使用其python_select命令来管理所指向的Python实例/opt/local/bin/python。然后,如果/opt/local/binPATH列表中的出现位置早于其他目录(带有)python,它将控制默认设置python。但是您确实需要通过添加框架bin目录来管理PATH,因此python_select通常并不是那么有用。

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



 类似资料:
  • 我通过Github将我的项目部署到GAE。有一些外国API密钥,我不想保存在存储库中并公开它们。是否可以在GAE控制面板中为项目设置环境变量,以便在应用程序中捕获它?

  • 本文向大家介绍如何在Linux上设置python环境变量PYTHONPATH?,包括了如何在Linux上设置python环境变量PYTHONPATH?的使用技巧和注意事项,需要的朋友参考一下 要将Linux上的PYTHONPATH设置为指向Python以在其他目录中查找模块和包导入,请按如下所示导出PYTHONPATH变量: 在这种情况下,我们将foo目录添加到PYTHONPATH中。请注意,我们

  • 本文向大家介绍如何在Mac上设置python环境变量PYTHONPATH?,包括了如何在Mac上设置python环境变量PYTHONPATH?的使用技巧和注意事项,需要的朋友参考一下 要在Mac OS上将PYTHONPATH设置为指向Python以在其他目录中查找模块和包导入,请按如下所示导出PYTHONPATH变量: 在这种情况下,将foo目录添加到PYTHONPATH。请注意,我们将附加它,而

  • 本文向大家介绍如何在Windows上设置python环境变量PYTHONPATH?,包括了如何在Windows上设置python环境变量PYTHONPATH?的使用技巧和注意事项,需要的朋友参考一下 要将Windows上的PYTHONPATH设置为指向Python以在其他目录中查找模块和包导入,请转到: 然后在系统变量下编辑PythonPath变量。在当前PYTHONPATH的末尾,添加分号,然后

  • 要执行道德黑客攻击,我们需要一个测试模拟环境,为了方便我们下载并安装Kali Linux操作系统,可以在Virtual Box中下载Kali Linux OS。以下是下载Virtual Box和Kali Linux的基本步骤。 第1步:下载Virtual Box 在第1步中,我们下载Virtual Box,因为Virtual Box可以在当前操作系统中创建虚拟机。Virtual Box就像一个完全

  • 我的Python程序有问题。在IDE(间谍IDE)上运行此程序时,我没有得到任何错误,并且它工作得很好。否则,如果我在python IDLE中运行它,我会得到以下错误。 我认为这个错误与Python路径环境变量有关,因为我找不到该模块。