pjsua: невозможно импортировать модуль pjsua python

Я получаю следующую ошибку при попытке импортировать модуль python pjsua. У меня версия Mac OS 10.8.1. Я проверил решение, предоставленное на http://www.darrensessions.com/?p=292. и решение, похоже, устранило эту проблему в MacOS-10.7. Похоже, это снова не работает для MacOS-10.8. У меня не было ошибок при компиляции кода. Только получите следующую ошибку при импорте модуля PJSUA.

>>> import pjsua
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pjsua.py", line 59, in <module>
    import _pjsua
ImportError: dlopen(/Library/Python/2.7/site-packages/_pjsua.so, 2): Symbol not found: _AudioOutputUnitStart
  Referenced from: /Library/Python/2.7/site-packages/_pjsua.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/_pjsua.so

Ваша помощь высоко ценится. Спасибо,


person user1766840    schedule 22.10.2012    source источник


Ответы (2)


Одним из простых решений было бы (чисто теоретическое, не тестировалось):

  1. Посмотрите на http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2011-November/013722.html
  2. Смотрите, где в патче написано:

    # OS X Lion Support
    if platform.mac_ver()[0].startswith("10.7"):
    extra_link_args += ["-framework", "AudioUnit"]
    
  3. Изменить строку

    if platform.mac_ver()[0].startswith("10.7"):
    

    to

    if platform.mac_ver()[0].startswith("10.7") or platform.mac_ver()[0].startswith("10.8"):
    
  4. Перекомпилировать

-- редактировать --

Хорошо, я исправил это, как я предложил, и:

> python ~/a.py 
a
> cat ~/a.py 
import pjsua

test = "a"
print test
person favoretti    schedule 23.10.2012
comment
Привет, Фаворетти, я попробовал вышеуказанное решение, но все еще получаю сообщение об ошибке. - person user1766840; 23.10.2012
comment
Хорошо, позвольте мне попытаться исправить это для вас. - person favoretti; 23.10.2012
comment
Вы сделали make distclean, make dep, make, make install, а затем переделали и переустановили модуль Python? - person favoretti; 23.10.2012
comment
Однажды я удалил и переделал процесс, как вы предложили, что решило мою проблему. Спасибо! - person user1766840; 23.10.2012

Эта ошибка была недавно исправлена, как показано выше, в пакете Python PJSIP 2.4:

# OS X Lion (10.7.x) or above support
    if version[0] == '10' and int(version[1]) >= 7:
        extra_link_args += ["-framework", "AudioUnit"]

Самое смешное, что я запускаю ту же ошибку:

    macbookproloreto:python admin$ python samples/simplecall.py 
Traceback (most recent call last):
  File "samples/simplecall.py", line 23, in <module>
    import pjsua as pj
  File "/Library/Python/2.7/site-packages/pjsua.py", line 59, in <module>
    import _pjsua
ImportError: dlopen(/Library/Python/2.7/site-packages/_pjsua.so, 2): Symbol not found: _pj_atexit
  Referenced from: /Library/Python/2.7/site-packages/_pjsua.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/_pjsua.so

не понимая, почему, поскольку скрипт Python setup.py, проверяющий версию платформы, кажется, в порядке:

>>> import platform
>>> version = platform.mac_ver()[0].split(".")
>>> version
['10', '10', '4']
>>> 
person loretoparisi    schedule 20.07.2015
comment
Убедитесь, что вы делаете make && make install. Эта ошибка импорта произойдет, если вы забудете часть make. - person Manav; 06.11.2015