首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Mac上安装python模块的最兼容方法是什么?

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

Stack Overflow用户
提问于 2009-07-31 16:58:55
回答 12查看 168.6K关注 0票数 127

我开始学蟒蛇了,我很喜欢它。我主要在Mac和Linux上工作。我发现在Linux上(主要是Ubuntu9.04),当我使用apt安装python模块时,它工作得很好。我可以毫不费力地把它进口。

在Mac上,我习惯于使用Macports来安装所有的Unixy设备。但是,我发现我安装的大多数python模块都没有被python看到。我花了一些时间来处理路径设置和使用python_select。没有什么是真正有效的,在这一点上,我并不是真正理解,而是我只是四处闲逛。

我的印象是,Macports并不是普遍喜欢管理python模块的。我想用一种更“接受”的方法重新开始(如果这是正确的话)。

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

奖金问题:

你是使用苹果的python还是其他版本的?您是从源代码编译所有东西还是有一个运行良好的软件包管理器(Fink?)。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-07-31 17:20:22

管理python包的最流行方法(如果您没有使用系统包管理器)是使用setuptools和easy_install。它可能已经安装在您的系统上了。像这样使用它:

代码语言:javascript
复制
easy_install django

easy_install使用Python包索引,这对于python开发人员来说是一个非常棒的资源。环顾四周,看看有哪些软件包可用。

更好的选择是pip,因为它尝试与easy_install关联的解决了很多问题。Pip使用与easy_install相同的包存储库,它只是工作得更好。实际上,唯一需要使用easy_install的时间是这个命令:

代码语言:javascript
复制
easy_install pip

在此之后,使用:

代码语言:javascript
复制
pip install django

在某个时候,您可能希望了解一些关于维塔列夫的知识。如果您在具有相互冲突的包需求的项目上进行了大量python开发,则virtualenv是天赐之物。它将允许您拥有完全不同版本的各种包,并根据您的需要在它们之间轻松切换。

关于使用哪种python,坚持使用苹果的python会给您带来最小的麻烦,但是如果您需要更新版本(我相信Leopard是2.5.1 ),我将使用宏端口 python2.6。

票数 145
EN

Stack Overflow用户

发布于 2011-08-28 09:13:47

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

我认识的大多数人都使用HomeBrewMacPorts,我更喜欢MacPorts,因为它是默认的Most环境和开发设置。只需移出您的/opt文件夹并使用普通用户Python环境测试您的包即可。

MacPorts只能在Mac中移植,但是使用easy_install或pip,您将了解如何在任何平台(Win/Mac/Linux/Bsd.)中设置您的环境。此外,它将永远是更最新的和更多的软件包。

我亲自让MacPorts处理我的Python模块,以便随时更新所有内容。与任何其他高级包管理器(即apt-get)一样,对于具有大量二进制依赖项的模块的繁重提升来说,它要好得多。我不可能用easy_install或pip构建Qt绑定(Qt绑定,PySide)。Qt非常庞大,需要大量编译。只要您想要一个需要非Python程序使用的库的Python包,就尽量避免使用easy_install或pip。

在某个时候,您会发现MacPorts中缺少一些包。我不相信MacPorts会给你整个CheeseShop。例如,最近我需要灵丹妙药模块,但是MacPorts只提供py25-长生不老药和py26-长生不老药,没有py27版本。在这种情况下,你有:

pip-2.7安装--用户灵丹妙药

(确保始终键入pip-(版本))

这将在您的家庭dir中构建一个额外的Python库。是的,Python将使用多个库位置:一个由MacPorts控制,另一个由用户本地位置控制,用于处理MacPorts中丢失的所有内容。

现在请注意,比起easy_install,我更喜欢pip。您应该避免使用setuptools和easy_install,这是很好的理由。这是一个好解释,我试着远离它们。pip的一个非常有用的特性是提供一个清单,列出安装在MacPorts、easy_install和pip本身中的所有模块(随它们的版本):

pip-2.7冻结

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

如果您是开发人员,请密切关注维塔列夫,以控制不同的设置和模块版本的组合。其他答案已经提到了,到目前为止还没有提到的是毒理模块,这是一个用于测试包在不同版本下正确安装的工具。

虽然我通常不存在版本冲突,但我希望使用虚拟环境来设置一个干净的环境,并清楚地了解我的包依赖关系。这样,我就不会忘记setup.py中的任何依赖项。

如果您选择MacPorts,请注意同一包的多个版本不再被选中,就像旧的Debian风格一样,有一个额外的python_select包(为了兼容性,它仍然在那里)。现在,您可以使用select命令来选择将使用哪个Python版本(甚至可以选择Apple安装的版本):

代码语言:javascript
复制
$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

在上面加上毒物,你的程序应该是可移植的。

票数 42
EN

Stack Overflow用户

发布于 2009-07-31 18:31:26

我使用MacPorts将MacPorts跟踪的Python和任何第三方模块安装到/opt/local中,并将任何手动安装的模块(不是MacPorts存储库中的模块)安装到/usr/local中,这从未造成任何问题。我认为您可能对某些MacPorts脚本和环境变量的使用感到困惑。

MacPorts python_select用于选择Python的“当前”版本,但它与模块无关。这允许您使用MacPorts安装Python2.5和Python2.6,并在安装之间切换。

$PATH环境变量不影响加载哪些Python模块。$PYTHONPATH是你要找的东西。$PYTHONPATH应该指向包含要加载的Python模块的目录。在我的例子中,我的$PYTHONPATH变量包含/usr/local/lib/python26/site-packages。如果您使用MacPorts‘Python,它会为您设置其他适当的目录,因此只需要向$PYTHONPATH添加其他路径。但是,在Python搜索已安装的模块时,根本不使用$PATH

$PATH用于查找可执行文件,所以如果您安装了MacPorts‘Python,请确保/opt/local/bin在您的$PATH中。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1213690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档