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

2025-04-16 08:57:00
admin
原创
50
摘要:问题描述:我开始学习 Python,并且非常喜欢它。我主要在 Mac 上工作,也使用 Linux。我发现在 Linux 上(主要是 Ubuntu 9.04)使用 apt-get 安装 Python 模块时,它运行良好。我可以毫无问题地导入它。在 Mac 上,我习惯使用 Macports 安装所有 Unix 相...

问题描述:

我开始学习 Python,并且非常喜欢它。我主要在 Mac 上工作,也使用 Linux。我发现在 Linux 上(主要是 Ubuntu 9.04)使用 apt-get 安装 Python 模块时,它运行良好。我可以毫无问题地导入它。

在 Mac 上,我习惯使用 Macports 安装所有 Unix 相关的组件。然而,我发现我用它安装的大多数 Python 模块在 Python 中都无法识别。我花了一些时间尝试 PATH 设置和使用 python_select 。但都没有任何效果,目前我还没有真正理解其中的原理,只是在摸索。

我感觉 Macports 在管理 Python 模块方面并不是很受欢迎。我想尝试一种更“被接受”(如果这个词用得恰当的话)的方法。

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

附加问题:

你用的是苹果的 Python 还是其他版本?所有东西都是从源代码编译的吗?或者有没有好用的包管理器(比如 Fink?)。


解决方案 1:

管理 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。

解决方案 2:

您的问题已经是三年前的了,并且其他答案中没有涉及一些细节:

我认识的大多数人都使用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-(version))

这会在你的主目录中构建一个额外的 Python 库。是的,Python 可以与多个库位置兼容:一个由 MacPorts 控制,另一个是用户本地库,用于存放 MacPorts 中缺少的所有内容。

现在请注意,我更喜欢 pip,而不是 easy_install。你应该避免使用 setuptools 和 easy_install,这是有充分理由的。这里有一个很好的解释,我尽量避免使用它们。pip 的一个非常有用的功能是列出你使用 MacPorts、easy_install 和 pip 本身安装的所有模块(以及它们的版本):

pip-2.7 冻结

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

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

虽然我通常不会遇到版本冲突,但我还是喜欢用虚拟环境来设置一个干净的环境,清晰地查看我的软件包依赖关系。这样,我就不会忘记 setup.py 中的任何依赖项。

如果您选择 MacPorts,请注意,它不再像旧版 Debian 那样使用额外的 python_select 包来选择同一软件包的多个版本(它仍然保留,以保证兼容性)。现在,您可以使用 select 命令来选择要使用的 Python 版本(您甚至可以选择 Apple 已安装的版本):

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

$ port select python python32

在其上添加毒药,你的程序应该真正具有可移植性

解决方案 3:

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

sudo port 安装 python26 python_select
sudo 端口选择——设置 python python26

或者

sudo port 安装 python30 python_select
sudo 端口选择——设置 python python30

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

sudo port install py26-packagename

或者

sudo port install py30-packagename

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

sudo port 安装 py26-setuptools

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

要获取 Python 可用包的完整列表,请输入:

端口列表 | grep py26-

或者

端口列表 | grep py30-

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

解决方案 4:

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

MacPortspython_select用于选择 Python 的“当前”版本,但它与模块无关。例如,您可以使用 MacPorts 同时安装 Python 2.5 和 Python 2.6,并在安装之间切换。

环境$PATH变量不会影响要加载的 Python 模块。$PYTHONPATH就是您要查找的内容。$PYTHONPATH应该指向包含要加载的 Python 模块的目录。就我而言,我的$PYTHONPATH变量包含/usr/local/lib/python26/site-packages。如果您使用 MacPorts 的 Python,它会为您设置其他合适的目录,因此您只需向 中添加其他路径即可$PYTHONPATH。但同样,$PATH当 Python 搜索您已安装的模块时, 根本不会使用 。

$PATH 用于查找可执行文件,因此如果您安装了 MacPorts 的 Python,请确保/opt/local/bin它在您的$PATH.

解决方案 5:

使用 MacPorts Python 安装没有任何问题。如果您从 MacPorts 安装 Python 模块,但却看不到它们,则很可能意味着您没有调用安装到 MacPorts 的 Python。在终端 shell 中,您可以使用绝对路径来调用可能已安装的各种 Python。例如:

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

要默认获取正确的 Python,需要确保你的 Shell 的 $PATH 设置正确,以确保首先找到正确的可执行文件。另一个解决方案是为不同的 Python 定义 Shell 别名。

正如其他人所建议的,python.org(MacPython)安装也可以。 easy_install 可以提供帮助,但是,同样,因为每个 Python 实例可能都有自己的easy_install命令,所以请确保您调用了正确的命令easy_install

解决方案 6:

如果您使用 MacPorts 的 Python,它有自己的 easy_install,位于:/opt/local/bin/easy_install-2.6(适用于 py26)。它与直接调用 easy_install 不同,即使您使用 python_select 更改了默认的 Python 命令。

解决方案 7:

你研究过easy_install吗?它不会同步你的 macports 之类的东西,但会自动下载最新的软件包和所有必要的依赖项,也就是说

easy_install nose

对于 nose 单元测试包,或者

easy_install trac

用于trac错误跟踪器。

他们的EasyInstall页面上还有更多信息。

解决方案 8:

对于 MacPython 安装,我在这篇博文中找到了使用 setuptools(easy_install)解决问题的有效解决方案:

http://droidism.com/getting-running-with-django-and-macpython-26-on-leopard

一个方便的技巧包括找出终端中活动的 Python 版本:

which python

解决方案 9:

使用 MacPorts 安装模块时,它不会进入 Apple 版本的 Python,而是安装到所选的 MacPorts 版本的 Python 中。

您可以使用名为python_select的 mac 端口更改默认使用的 Python 版本。说明在这里。

另外,还有easy_install。它将使用 python 安装 python 模块。

解决方案 10:

您可能已经pip3预先安装,所以只需尝试一下!

解决方案 11:

关于使用哪个版本的 Python,Mac OS 通常自带旧版本的 Python。建议您升级到新版本。您可以从http://www.python.org/download/下载 .dmg 文件。下载后,请务必更新路径。您可以在此处找到具体的命令:http://farmdev.com/thoughts/66/python-3-0-on-mac-os-x-alongside-2-6-2-5-etc-/

解决方案 12:

我将easy_install与 Apple 的 Python 一起使用,效果非常好。

解决方案 13:

直接安装其中一个 fink 软件包(截至 2013 年 11 月,Django 1.6)

fink install django-py27
fink install django-py33

或者为自己创建一个虚拟环境:

fink install virtualenv-py27
virtualenv django-env
source django-env/bin/activate
pip install django
deactivate # when you are done

或者在虚拟环境中使用 fink django 以及任何其他 pip 安装的软件包

fink install django-py27
fink install virtualenv-py27
virtualenv django-env --system-site-packages
source django-env/bin/activate
# django already installed
pip install django-analytical # or anything else you might want
deactivate # back to your normally scheduled programming
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3949  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2735  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   74  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   82  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   68  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用