0

当我尝试import regex.

Traceback (most recent call last):
  File "app.py", line 3, in <module>
    import regex 
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/regex.py", line 391, in <module>
    import _regex_core
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/_regex_core.py", line 21, in <module>
    import _regex
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/_regex.so, 2): no suitable image found.  Did find:
    /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/_regex.so: mach-o, but wrong architecture

我已经通过 macports 安装了 python33,然后通过 sudo python setup.py install 安装了最新版本的正则表达式(由 Matthew Barnett 编写)。

我正在使用 Mac Os X Leopard (8.5)。我的处理器是 64 位的 Core 2 Duo。我该如何解决这个错误?

当我跑步时,lipo -info我得到:

Non-fat file: /opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/_regex.so is architecture: i386

当我运行lipo -info /opt/local/bin/python 非胖文件时:/opt/local/bin/python 是架构:ppc7400

为什么是python ppc7400?

4

1 回答 1

2

MacPorts 有自己的regexPython 3.3 库端口,那么为什么不使用它而不是自己构建呢?

$ sudo port install py33-regex
[...]
$ python3.3
Python 3.3.0 (default, Nov 23 2012, 10:26:01) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import regex
>>> regex.match(r'[a-z]+', 'abc123').group(0)
'abc'

ppc7400架构更广为人知的是 PowerPC G4,它是您正在运行的 OS X 版本支持的架构之一。看起来好像您已经设法安装了 Python 3.3 的 PowerPC 版本。(大概它是通过 Rosetta 运行的。)

可能发生这种情况的一种方法是,如果您曾经在 PowerPC G4 机器上安装过 MacPorts,然后使用迁移助手将安装转移到新的 Intel 机器上。请参阅有关该主题的MacPorts 常见问题解答

MacPorts 适用于基于 Intel 和 PowerPC 的 Mac,但默认情况下,您安装的端口将仅针对您当前运行的体系结构进行编译。这意味着,如果您从 PowerPC Mac 迁移到 Intel 并使用迁移助手将数据复制到新机器上,您应该在新机器上重新安装所有端口,以便为 Intel 重建它们。请参阅迁移以了解如何使事情再次正常运行。

(此外,您不需要使用lipo: 该file实用程序会告诉您可执行文件或共享库中的体系结构。)

于 2013-03-24T21:49:34.103 回答