我需要多少个MacPorts安装?

2 投票
2 回答
630 浏览
提问于 2025-04-17 08:31

在过去的几个月里,我开始使用Wing IDE来进行大部分编程工作。我选择Wing主要是因为它和wxPython配合得很好,这让我调试起来比之前用TextWrangler和Terminal时快多了。不过,Wing有个小问题,就是没有简单的方法可以强制让通用版本的Python以32位模式运行。由于我使用的是wxPython 2.8.x(只支持32位),所以我用的是一个32位的Python版本(2.7.1)作为可执行文件。只要我使用的是Python的标准库和wxPython,就没有问题,但当我开始尝试安装第三方模块来和这个32位的Python一起使用时,就遇到麻烦了。我想通过macports来安装所有模块,但我下载的macports似乎只安装适用于其他版本的Python的模块,而这些版本是通用的。因此,这实际上是一个关于macports的问题,我希望能对以下两个点得到澄清:

  1. 如果我想在我的电脑上安装三个版本的Python(比如2.6、2.7和3.2),并想用macports为每个版本安装模块,我需要为每个Python版本安装三个不同的macports吗?
  2. 如果我理解得没错(1),我该如何安装不同的版本?我在macports的网站上找过,但没有找到关于根据你想用的Python版本来选择不同版本的说明。

非常感谢你的帮助。

2 个回答

3

不,你不需要不同版本的macport,你需要的是不同版本的python。

下面是清晰的步骤:

  1. 安装macports。安装完成后,你应该能使用port命令。如果你用的是Mac的安装程序,/opt/local/bin会自动放在你的路径最前面。
  2. 安装python 2.6 - 输入sudo port install python26
  3. 安装python 2.7 - 输入sudo port install python27
  4. 你可以通过/opt/local/bin/python2.6来使用python26。
  5. 你可以通过/opt/local/bin/python2.7来使用python27。

  6. 如果你想把python27设为默认版本,可以输入sudo port python-select python27。这样会确保/opt/local/bin/python链接到/opt/local/bin/python2.7

Mac自带的python安装是不会被删除的。你可以通过/usr/bin/python访问它。

Macports会把它的工具安装在/opt/local路径下,二进制文件在/opt/local/bin。所以现在你会有多个版本的python,且它们位于不同的位置,这样你就可以选择运行哪个版本。

用特定版本的python安装的包会放在它的site-packages里,其他版本的python是无法使用这些包的。

[编辑:根据评论]

我有多个标准python安装的版本。

~ $ /usr/bin/python
python            python2.5         python2.6         pythonw           pythonw2.6        
python-config     python2.5-config  python2.6-config  pythonw2.5 

使用python2.5时,我得到:

>>> print platform.architecture()
('32bit', '')
>>> sys.maxint > 2**32
False

使用python2.6时,我得到:

>>> print platform.architecture()
('64bit', '')
>>> sys.maxint > 2**32
True

查看这个链接的说明 - http://docs.python.org/library/platform.html

3

在你的电脑上,Python的安装路径是/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7,这几乎肯定和MacPorts没有关系。你可能是通过python.org的安装程序安装的。如果你想给这个Python安装一些额外的包,你需要使用Distribute包和/或pip来安装独立版本的easy_install,然后直接用它们为这个Python实例安装包。这些版本会被安装在框架的bin目录下,也就是/Library/Frameworks/Python.framework/Versions/2.7/bin.。你不能通过MacPorts来管理这个Python的包;那只适用于MacPorts安装的Python,也就是在/opt/local/bin的版本。

所以看起来你安装了三个版本的Python 2.7。一个是苹果自带的系统Python,路径是/usr/bin/python2.7,一个是通过MacPorts安装的,路径是/opt/local/bin/python2.7,还有一个(可能是从python.org来的)在/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7(这个可能在/usr/local/bin/python2.7有一个符号链接)。同时安装这三个版本没有什么问题,它们可以共存。只要记住你正在使用哪个版本,要么通过管理你的shell路径,要么使用每个版本的绝对路径,并且任何额外安装的包需要安装到正确的Python的site-packages目录下。如果你使用easy_installpip,你需要为每个版本安装和/或使用正确的工具。

如果你的目标只是想用wx-python和Python 2.7一起工作,关于构建仅支持32位的wx-python,在MacPorts上有一个突出的问题,因为它依赖于已经被弃用的OS X Carbon API。似乎有一个新的MacPorts端口,是一个Cocoa版本的wxWidgets,应该可以在64位模式下工作。你可以尝试一下:

sudo port selfupdate
sudo port install py27-wxpython-devel

撰写回答