2011-12-16 166 views
2

在过去的几个月中,我已经开始使用Wing IDE来完成绝大多数的编程工作。我之所以选择Wing主要是因为它与wxPython一起工作良好,与我在Terminal上使用TextWrangler的情况相比,我的调试速度更快。然而,Wing的一个怪癖是,没有令人满意的方式来迫使Python的通用构建以32位模式运行。由于我使用的是wxPython 2.8.x(仅限32位),因此我只使用32位版本的python作为可执行文件(2.7.1)。只要我只使用python标准库和wxPython,我就没有问题,当我开始尝试安装第三方模块来使用这个32位版本的Python时,我的麻烦就开始了。我想使用macports来完成所有的安装,但似乎我下载的macports安装的模块只能用于不同版本的python,而这恰恰是通用的。本质上,那么这是一个关于MacPorts的问题,我会很感激以下两点澄清:我需要多少次安装macports

  1. 如果我想我的电脑上的Python的三个版本(比如2.6,2.7和3.2),并希望使用macports为他们每个人安装模块,我是否需要三个单独版本的macports - 每个python一个?
  2. 如果我对(1)我如何着手安装单独的版本?我已经看过macports网站,但可以找到没有参考的替代版本基于哪个版本的python,你想使用它

帮助非常感谢。

回答

3

一个Python安装在/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7几乎肯定与MacPorts无关。您可能是从python.org安装程序安装的。如果你想安装软件包,你应该使用the Distribute package和/或pip来安装easy_install的不同版本,并且直接为它们安装Python实例的软件包。这些版本将安装在框架bin目录中,/Library/Frameworks/Python.framework/Versions/2.7/bin.您无法从MacPorts管理它的Python包;只适用于MacPorts Pythons,即/opt/local/bin

所以看起来你已经安装了三个版本的Python 2.7。 Apple提供的系统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站点包目录中。如果您使用easy_installpip,则需要为每个安装和/或使用正确的一个。

如果您的目标只是在Python 2.7中使用wx-python,则由于其依赖于不推荐使用的OS X Carbon API,所以存在一个关于构建wx-python的32位版本的出色MacPorts问题。似乎有一个可以在64位模式下工作的wxWidgets Cocoa版本的a new MacPorts port。你可能想试验它:

sudo port selfupdate 
sudo port install py27-wxpython-devel 
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. 您可以使用python26通过/opt/local/bin/python2.6
  5. 您可以使用python27通过/opt/local/bin/python2.7

  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一起安装的软件包将进入它的站点包,并且不会被其他版本的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

+0

谢谢。我认为我遇到的问题是我有两个版本的python2.7,其中一个是32位,而另一个是通用的。他们是一种指定我想要构建的这两个版本中的哪一个的方式。目前指定python2.7似乎默认为32/64位版本,而它是我需要的另一个。 – 2011-12-16 22:19:23

+2

另外请注意,各种MacPorts python包的端口名称通常遵循命名方案:`pynn-packagename`,其中`nn`指Python版本,例如`py27-distribute`(for 2.7)和` py32-distribute`(for 3.2)。由于历史原因,`py-packagename`端口(不带数字)通常是Python 2.4版本。 – 2011-12-16 22:20:36