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

时间:2010-08-15 14:02:16

标签: python macos development-environment

在Ubuntu Linux上开始使用Python之后,我现在已经很好地完成了我在Mac上的大部分持续工作,目前是Mac OS X 10.6。不幸的是,我忽略了如何正确地关注Python的安装方式并最终得到:

  • Python {(1}}中的Python 2.6.1(Mac默认版本?)(另外,2.5.4,我不确定它是如何实现的)
  • /usr/bin中通过MacPorts安装了Python 2.6.5。这是我的默认
  • 我使用/opt/local/bin/来安装库,这些库最终会出现在一些不合时宜的地方(例如pip - SRSLY?)
  • 否则,主要是TextMate,Git用于版本控制。 Django和Google App Engine等......

现在我准备设置2.7和3.2,我对随意的状态不满意。那么你最喜欢的组织代码和库的方法是什么,以及你如何将Mac摔跤提交?

我想继续使用/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/,但希望能够更多地控制或至少了解哪些版本的库已安装并可从哪里访问:我遇到安装问题{ {1}}通过pip并且只能从过时的2.6.1 Python加载它,而不是我当前的2.6.5 Python。 MacPorts有py.test,但它并没有太大的帮助:

pip

我问过的大多数Python人都不使用我不太喜欢的MacPorts,而是使用来自python_select的Mac Python。我也听到了系统地使用reason: chris$ python_select -l Available versions: current none python26 python26-apple 的建议,那么实用介绍的链接是什么?

4 个答案:

答案 0 :(得分:16)

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

/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兼容 - 这是{{ 1}}你看)。 python.org Mac OS X安装程序安装到/usr/bin/python2.5。 MacPorts使用/Library/Frameworks/Python.framework

框架包括/opt/local/Library/Frameworks/Python.framework目录(框架中的bin);这通常是安装包脚本的默认位置。它也是放置解释器二进制文件的符号链接的地方。

下面是一个安装了多个Python版本的python.org样式框架:

../Versions/x.x/bin

以下是MacPorts $ 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* ,其中包含许多其他网站套餐:

bin

如果您使用python.org安装程序或MacPorts安装2.7或3.1 Pythons,它们都以$ 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* [...] /Library/Frameworks为根,并且很乐意与其他版本共存。要成功使用框架安装,您需要管理shell /opt/local/Library/Frameworks。特别是,您应该确保要使用的Python的框架PATH目录位于bin上。所以对于MacPorts,在PATH

中是这样的
~/.bash_profile

或python.org安装程序:

export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin:/opt/local/bin:$PATH

此外,通常您需要从export PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:$PATH pip安装您喜欢的Python软件包管理加载项的单独版本(例如easy_installDistribute命令)对于您使用的每个Python实例。每个都安装在默认脚本目录(即框架setuptools目录)中。当您安装其版本的软件包(binsudo port install py26-pip)时,MacPorts会自动处理此问题。请注意,Apple在sudo port install py31-distribute为其Pythons提供了一组easy_install个链接,并将包安装到/usr/bin。您需要确保使用适合您的Python实例的/Library/Pythoneasy_install。确保实例的框架pip目录位于bin中的第一个确保。

注意,如果您使用MacPorts,可以使用其PATH命令来管理python_select指向的Python实例。然后,如果您的PATH列表中出现/opt/local/bin/python早于/opt/local/bin的其他目录,那么它将决定哪个是您的默认python。但是你真的需要通过添加框架python目录来管理PATH,因此bin通常不是那么有用。

使用MacPorts(或类似的基于广泛的分发服务器)的另一个积极方面是它提供了许多流行的Python包,包括处理偶尔建立和链接到第三方C库的混乱细节随Mac OS X一起提供。例如,由于MySQL客户端库和python_selectMySQLdbPIL软件包在Mac OS X上经常出现绊脚石,但MacPorts使得它更容易把一切都搞定。但您可以选择使用MacPorts(libjpeg)或sudo port py26-pilpip)或sudo pip install pil直接安装内容,也可以下载源代码,然后执行此操作你自己(easy_install)。而且因为所有这些都使用Python的sudo python setup.py ...来完成脏工作,所有这些方法通常最终会在给定Python实例的同一个地方安装包的文件。

答案 1 :(得分:1)

我刚刚使用了'pythonbrew',我在10.6.7上使用股票系统Python轻松安装了它。我不得不使用'--force'选项绕过后编译测试,因为我在test_dl和test_readline上失败了(快速google检查没有显示这些是真正的问题)。

$ sudo easy_install pythonbrew

安装完成后,请执行此操作以获取更多说明:

$ pythonbrew_install

所以我现在有一个很好的隔离python-2.7.1安装,而不会干扰系统安装。

答案 2 :(得分:0)

我建议使用Homebrew,Python指南人员也是如此:

这是一个非常棒的一步一步的入门指南:

http://docs.python-guide.org/en/latest/starting/install/osx/#install-osx

答案 3 :(得分:0)

这是一个古老的问题,但是过去我一直在努力升级Python和虚拟环境。我已经弄清楚如何使它适用于我所做的工作。希望这会对某人有所帮助。

设置:
运行10.14的Mac
Python 3.7
各种软件包:Pandas,IPython,Paramiko等。

Python:
只需使用它们在Python.org中提供的安装程序即可。单击macOS的“下载”按钮,下载软件包并单击安装程序。做完了当需要升级到下一个Python 3版本时,请重复该过程。
要在命令行上获取Python3解释器而不是Python2,请使用python3而不是python

摆脱旧版Python3
如果您不喜欢使用旧的Python版本,请打开Applications文件夹,然后将不需要的旧Python3版本拖放到垃圾箱中。除非您知道自己在做什么,否则请勿对Python2版本执行此操作。其中一些是操作系统附带的,如果消失,可能会引起麻烦。

安装软件包:
如果您想简化软件包的安装,@ Ned Deily的建议是使用虚拟环境。 Python2的虚拟环境工具是'virtualenv'。该工具在Python3中称为“ venv”。

步骤1:
创建一个目录来保存您所有的虚拟环境。这不是必需的,但这就是我跟踪我的方式。我保留两个单独的目录,分别是“ virtenvs”和“ venvs”,这取决于我要安装用于Python2还是Python3的软件包。在此示例中,我们将使用Python3:

cd ~
mkdir venvs
cd venvs

现在,我以我的项目或已安装的主要软件包为我的软件包命名。对于此示例,我们将其命名为“ project1”:
venv project1

步骤2:
使用以下命令“激活”虚拟环境。每次启动新终端或会话时都需要执行此操作。
source ~/venvs/project1/bin/activate

Pip变化很大,请更新
pip install --upgrade pip

第3步:
现在,您可以开始将软件包安装到新的虚拟环境中了:
pip install pandas

完成后或想要切换到其他虚拟环境,只需键入:
deactivate

下一步是什么
浏览网络以获取有关Python虚拟环境的更多信息。使用这种方法,我没有遇到需要MacPorts,Anaconda等的软件包。毫无疑问,确实有需要的软件包。 YMMV。希望这种方法对您有用。