Glo*_*ish 124 python macos module packages macports
我开始学习python并喜欢它.我主要在Linux上使用Mac.我在Linux(大多数是Ubuntu 9.04)上发现当我使用apt-get安装python模块时它工作正常.我可以毫不费力地导入它.
在Mac上,我习惯使用Macports来安装所有的Unixy东西.但是,我发现我安装的大多数python模块都没有被python看到.我花了一些时间玩PATH设置并使用python_select.没有什么真的有用,在这一点上我并不是真正理解,而是我只是在四处寻找.
我觉得Macports并不是普遍喜欢管理python模块的.我想用更"接受"(如果这是正确的话)方法开始新鲜.
所以,我想知道,Mac python开发人员用来管理模块的方法是什么?
奖金问题:
你使用Apple的python还是其他一些版本?你是从源代码编译所有东西还是有一个运行良好的包管理器(Fink?).
six*_*ear 143
管理python包的最常用方法(如果你没有使用系统包管理器)是使用setuptools和easy_install.它可能已经安装在您的系统上.像这样使用它:
easy_install django
Run Code Online (Sandbox Code Playgroud)
easy_install使用Python Package Index ,这对python开发人员来说是一个了不起的资源.环顾四周,了解可用的套餐.
一个更好的选择是pip,它正在获得牵引力,因为它试图修复与easy_install相关的许多问题.Pip使用与easy_install相同的包存储库,它只是效果更好.真的唯一需要使用easy_install的时间用于此命令:
easy_install pip
Run Code Online (Sandbox Code Playgroud)
之后,使用:
pip install django
Run Code Online (Sandbox Code Playgroud)
在某些时候,你可能想要了解一下virtualenv.如果你对包含要求冲突的项目进行了大量的python开发,那么virtualenv就是天赐之物.它将允许您拥有完全不同版本的各种包,并根据您的需要轻松切换它们.
关于使用哪个python,坚持使用Apple的python会给你带来最少的麻烦,但是如果你需要一个更新的版本(我相信Leopard是2.5.1),我会选择macports python 2.6.
Sys*_*ank 42
您的问题已经有三年了,其他答案中没有涉及到一些细节:
我认识的大多数人使用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 install --user elixir
(确保你总是键入pip-(版本))
这将在你的家庭目录中构建一个额外的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版本正确安装的工具.
虽然我通常没有版本冲突,但我喜欢使用virtualenv来设置一个干净的环境并清楚地了解我的包依赖关系.这样我就不会忘记setup.py中的任何依赖项
如果你选择MacPorts,请注意不再选择相同软件包的多个版本,例如带有额外python_select软件包的旧Debian风格(它仍然存在兼容性).现在您可以使用select命令选择要使用的Python版本(您甚至可以选择Apple安装的版本):
$ port select python
Available versions for python:
none
python25-apple
python26-apple
python27 (active)
python27-apple
python32
$ port select python python32
Run Code Online (Sandbox Code Playgroud)
在它上面添加tox,你的程序应该是真正可移植的
Mic*_*yan 30
请参阅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版本.
我使用MacPorts安装Python和MacPorts跟踪的任何第三方模块/opt/local,并安装任何手动安装的模块(不在MacPorts存储库中)/usr/local,这从未引起任何问题.我想你可能会对使用某些MacPorts脚本和环境变量感到困惑.
MacPorts python_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.
使用MacPorts Python安装没有任何问题.如果你从MacPorts安装python模块但是没有看到它们,那可能意味着你没有调用你安装的MacPorts python.在终端shell中,您可以使用绝对路径来调用可能安装的各种Pythons.例如:
$ /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
Run Code Online (Sandbox Code Playgroud)
要在默认情况下获得正确的python,需要确保正确设置shell $ PATH以确保首先找到正确的可执行文件.另一种解决方案是为各种蟒蛇定义shell别名.
正如其他人所建议的那样,python.org(MacPython)安装也很好. easy_install 可以帮助,但是,因为每个Python实例可能有自己的easy_install命令,请确保您正在调用右侧easy_install.
如果您使用MacPorts中的Python,它有自己的easy_install位于:/opt/local/bin/easy_install-2.6(对于py26,即).它与简单地直接调用easy_install不同,即使你使用python_select来改变你的默认python命令.