2009-10-06 3 views
0

Привет, Я пытаюсь установить Pylucene на свой 32-разрядный питон, работающий на Snow Leopard. Я с успехом скомпилировал JCC. Но я получаю предупреждения, делая pylucene:Pylucene in Python 2.6 + MacOs Snow Leopard

ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/__init__.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/__wrap01__.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/__wrap02__.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/__wrap03__.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/functions.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/JArray.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/JObject.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/lucene.o, file is not of required architecture 
ld: warning: in build/temp.macosx-10.6-i386-2.6/build/_lucene/types.o, file is not of required architecture 
ld: warning: in /Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/JCC-2.3-py2.6-macosx-10.3-fat.egg/libjcc.dylib, file is not of required architecture 
ld: warning: in /Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/JCC-2.3-py2.6-macosx-10.3-fat.egg/libjcc.dylib, file is not of required architecture 
build of complete 

Затем я пытаюсь импортировать Lucene:

MacBookPro:~/tmp/trunk python 
Python 2.6.3 (r263:75184, Oct 2 2009, 07:56:03) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pylucene 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named pylucene 
>>> import lucene 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/lucene-2.9.0-py2.6-macosx-10.6-i386.egg/lucene/__init__.py", line 7, in <module> 
    import _lucene 
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/lucene-2.9.0-py2.6-macosx-10.6-i386.egg/lucene/_lucene.so, 2): Symbol not found: __Z8getVMEnvP7_object 
    Referenced from: /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/lucene-2.9.0-py2.6-macosx-10.6-i386.egg/lucene/_lucene.so 
    Expected in: flat namespace 
in /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/lucene-2.9.0-py2.6-macosx-10.6-i386.egg/lucene/_lucene.so 
>>> 

Любые намеки?

+0

Вы скомпилировали jcc для другой архитектуры - и затем вы скомпилируете пилюкен с gcc4-01 и хотите построить только 32 бит. Я могу сказать, что на снежном барсе с помощью python 2.6 мой предпочтительный питон должен установить 32 бит, но когда я скомпилирую как jcc, так и lucene, компилятор создает универсальные двоичные файлы (как i386, так и 64 бит) в файле makefile pylucene, я использую: ОКК = $ (ПИТОН) -m ОКК .__ main__ --shared --arch x86_64 --arch i386 работает – roman

ответ

0

Трудно сказать наверняка, но может быть таким же простым, как и jcc, не установленным в том же месте python. Для устранения неполадок я сначала попытаюсь использовать jcc. Эти команды должны работать даже без Lucene:

>>> import jcc 
>>> jcc.initVM(jcc.CLASSPATH) 
<jcc.JCCEnv object at 0x1004730d8> 
>>> jcc._jcc.getVMEnv() 
<jcc.JCCEnv object at 0x1004730f0> 

И имя модуля Lucene, кстати, не pylucene.

+0

ОКК работает, Lucene не: Python 2.6.3 (r263: 75184 , 2 октября 2009, 07:56:03) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin Введите «помощь», «авторское право», «кредиты» или «лицензия» для получения дополнительной информации. >>> импорт ОКК >>> jcc.initVM (jcc.CLASSPATH) >>> MacBookPro: ~/TMP/багажник – jbastos

+0

жалком о форматировании в комментарии выше. – jbastos

+0

Я забыл перечислить getVMEnv() >>> jcc._jcc.getVMEnv() jbastos

1

мне пришлось скорректировать линию 44 до 49 в Makefile, чтобы получить pylucene правильно установить:

PREFIX_PYTHON=/my/virtualenv 
ANT=ant 
PYTHON=$(PREFIX_PYTHON)/bin/python 
# add .__main__ to default configuration! 
# --arch depends on your architecture of course 
JCC=$(PYTHON) -m jcc.__main__ --shared --arch x86_64                                          
NUM_FILES=2 

Надежда, что помогает!

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