什么是在Mac上安装python模块最兼容的方式?

我开始学习python并热爱它。 我主要在Mac上工作,也在Linux上工作。 我发现在Linux上(主要是Ubuntu 9.04),当我使用apt-get安装python模块时,它工作正常。 我可以毫不费力地导入它。

在Mac上,我习惯于使用Macports来安装所有Unixy的东西。 但是,我发现我安装的大多数python模块都没有被python看到。 我花了一些时间玩弄PATH设置并使用python_select。 没有什么是真正的工作,在这一点上,我不是很了解,而是我只是在探索。

我觉得Macports并不是普遍喜欢管理Python模块。 我想用一个更“接受的”(如果这是正确的话)方法开始新鲜。

所以,我想知道,Mac python开发人员用来管理模块的方法是什么?

奖金问题:

你使用Apple的Python或其他版本? 你是否从源代码编译了所有东西,或者是否有一个可以很好运行的包管理器(Fink?)。


管理python软件包的最流行的方法是使用setuptools和easy_install。 它可能已经安装在您的系统上。 像这样使用它:

easy_install django

easy_install使用Python软件包索引,这对python开发人员来说是一个惊人的资源。 查看可用的软件包。

一个更好的选择是pip,它正在获得牵引力,因为它试图解决与easy_install相关的许多问题。 Pip使用与easy_install相同的软件包存储库,它只是更好。 真正唯一需要使用easy_install的时候是这个命令:

easy_install pip

之后,使用:

pip install django

在某些时候,你可能想学习一些关于virtualenv的知识。 如果您对包需求冲突的项目进行大量python开发,virtualenv是天赐之物。 它将允许您拥有完全不同版本的各种软件包,并根据您的需求轻松切换它们。

关于使用哪种python,坚持使用Apple的python会给你带来最少的麻烦,但是如果你需要一个更新的版本(我相信Leopard是2.5.1),我会使用macports python 2.6。


你的问题已经有三年了,其他一些答案中没有提到一些细节:

大多数我认识的人使用HomeBrew或MacPorts,我更喜欢MacPorts,因为它清楚了Mac OS X默认环境和我的开发设置。 只需移出/ opt文件夹并使用普通用户Python环境测试你的包

MacPorts只能在Mac中移植,但使用easy_install或pip,您将学习如何在任何平台(Win / Mac / Linux / Bsd ...)中设置您的环境。 此外,它将始终是更新的,并有更多的软件包

我个人让MacPorts处理我的Python模块以保持一切更新。 像任何其他高级包管理器(即:apt-get)一样,对于具有很多二进制依赖关系的模块的繁重工作要好得多。 我无法通过easy_install或pip构建我的Qt绑定(PySide)。 Qt非常庞大,需要大量编译。 只要你需要一个需要非Python程序使用库的Python包,就尽量避免使用easy_install或pip

在某些时候,你会发现在MacPorts中缺少一些软件包。 我不相信MacPorts会给你整个CheeseShop。 例如,最近我需要Elixir模块,但MacPorts只提供py25-elixir和py26-elixir,不提供py27版本。 在这些情况下,您可以:

pip-2.7安装 - 用户elixir

(确保你总是输入pip-(版本))

这将在您的主目录中创建一个额外的Python库。 是的,Python可以与多个库位置一起工作:一个由MacPorts控制,另一个用户在MacPorts中缺少一切。

现在请注意,我赞成通过easy_install进行点击。 有一个很好的理由,你应该避免setuptools和easy_install。 这是一个很好的解释,我试图远离它们。 pip的一个非常有用的功能是为您提供您使用MacPorts,easy_install和pip本身安装的所有模块(沿其版本)的列表:

点子2.7冻结

如果您已经开始使用easy_install,不必担心,pip可以识别easy_install已完成的所有操作,甚至可以升级随其安装的软件包。

如果您是开发人员,请关注virtualenv以控制不同的设置和模块版本的组合。 其他答案已经提到它,到目前为止没有提到的是Tox模块,它是一个用于测试你的软件包是否正确安装了不同的Python版本的工具。

虽然我通常没有版本冲突,但我喜欢使用virtualenv来设置一个干净的环境并清楚地看到我的软件包依赖关系。 这样我就永远不会忘记我的setup.py中的任何依赖关系

如果您使用MacPorts,请注意,不再选择多个版本的相同软件包,就像使用额外的python_select软件包的旧Debian样式(为了兼容性,它仍然存在)。 现在你有选择命令来选择使用哪个Python版本(你甚至可以选择Apple安装的版本):

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

在它上面加上毒素,你的程序应该是非常便携的


请参阅Python OS X开发环境。 最好的方法是使用MacPorts。 下载并安装MacPorts,然后在终端中输入以下命令,通过MacPorts安装Python:

sudo port install python26 python_select
sudo port select --set python python26

要么

sudo port install python30 python_select
sudo port select --set python python30

使用第一组命令来安装Python 2.6,第二组使用Python 3.0来安装。 然后使用:

sudo port install py26-packagename

要么

sudo port install py30-packagename

在上面的命令中,将packagename替换为软件包的名称,例如:

sudo port install py26-setuptools

这些命令将自动安装给定Python版本的软件包(及其依赖项)。

有关Python可用包的完整列表,请键入:

port list | grep py26-

要么

port list | grep py30-

您使用哪个命令取决于您选择安装哪个版本的Python。

链接地址: http://www.djcxy.com/p/26279.html

上一篇: What is the most compatible way to install python modules on a Mac?

下一篇: Download Git repo without all the .git stuff?