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ビットのCore2Duoです。このエラーを修正するにはどうすればよいですか?

実行すると、次のようlipo -infoになります。

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

Non-fatファイルを実行するとlipo -info /opt/local/bin/python :/ opt / local / bin / pythonはアーキテクチャ:ppc7400

なぜPythonppc7400なのですか?

4

1 に答える 1

2

MacPortsにはPython3.3用のライブラリの独自のポートがあるregexので、自分でビルドする代わりにそれを使用してみませんか?

$ 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としてよく知られていました。これは、実行しているOSXのバージョンでサポートされているアーキテクチャの1つです。どういうわけか、Python3.3のPowerPCビルドをインストールできたようです。(おそらく、Rosetta経由で実行されています。)

これが発生する可能性のある1つの方法は、PowerPC G4マシンにMacPortsをインストールしていて、MigrationAssistantを使用してインストールを新しいIntelマシンに転送した場合です。この件については、 MacPortsのFAQを参照してください。

MacPortsはIntelベースとPowerPCベースの両方のMacで動作しますが、デフォルトでは、インストールするポートは、現在実行しているアーキテクチャ用にのみコンパイルされます。つまり、たとえばPowerPC MacからIntelに移行し、Migration Assistantを使用してデータを新しいマシンにコピーする場合は、新しいマシンにすべてのポートを再インストールして、Intel用に再構築する必要があります。物事を再び機能させる方法については、移行を参照してください。

(また、使用する必要はありませんlipofileユーティリティは、実行可能ライブラリまたは共有ライブラリのアーキテクチャを教えてくれます。)

于 2013-03-24T21:49:34.103 に答える