2013-03-24 2 views
0

Я получаю следующую ошибку при попытке import regex.«mach-o, но неправильная архитектура» при импорте 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 

Я установить python33 через MacPorts, а затем установили последнюю версию регулярных выражений (Мэтью Барнетта) через SUDO питона setup.py установки.

Я использую Mac Os X Leopard (8.5). Мой процессор - это Core 2 Duo, который имеет 64 бит. Как я могу исправить эту ошибку?

Когда я бегу 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/местные/бен/Python является архитектура: ppc7400

Почему питон ppc7400?

+0

Вы уверены, что вы используете 3.3 питона двоичная? – Xymostech

+0

Посмотрите на пути к библиотеке: это указывает на то, что запущен Python 3.3. –

+0

Когда я запускаю python на терминале, я получаю: Python 3.3.0 (по умолчанию, 24 марта 2013 г., 16:14:43) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Тип "help" , "авторское право", "кредиты" или "лицензия" для получения дополнительной информации. >>> – Baz

ответ

2

MacPorts имеет свой собственный порт библиотеки regex для Python 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 архитектура был более известен как G4 PowerPC, которая является одной из архитектур, поддерживаемой версией OS X, что вы работаете. Похоже, что вам удалось установить PowerPC-сборку Python 3.3. (Предположительно, он работает через Rosetta.)

Один из способов, которым это могло случиться, - это если вы использовали установку MacPorts на машине PowerPC G4, и вы перенесли установку на новую машину Intel с помощью Помощника по миграции. См MacPorts FAQ по теме:

MacPorts работает как с процессорами Intel и PowerPC основой Маков, но, по умолчанию, порты вы устанавливаете будет собраны только для архитектуры вы в настоящее время работаете. Это означает, что если вы перейдете с, скажем, PowerPC Mac на Intel, и с помощью помощника по миграции скопируйте свои данные на новый компьютер, вы должны переустановить все свои порты на новом компьютере, чтобы перестроить их для Intel. См. Migration о том, как заставить все работать снова.

(Кроме того, вам не нужно использовать lipo: утилита file покажет вам архитектуру (ы) в исполняемом или разделяемой библиотеки.)

+0

Я установил регулярное выражение с macports и теперь он импортирует правильно. Тем не менее, это потому, что он теперь также построен для архитектуры ppc7400. Почему это? – Baz

+0

См. Обновленный ответ. –

+0

Я не перешел из PowerPC. :) – Baz

Смежные вопросы