OSError: dlopen (libSystem.dylib, 6): изображение не найдено

Только что обновил мой Mac до El Capitan 10.11. Я пытаюсь запустить Django 1.6 с Celery 3.1, и теперь я получаю эту ошибку:

Unhandled exception in thread started by <function wrapper at 0x10f861050>
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/django/utils/autoreload.py", line 93, in wrapper
    fn(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 101, in inner_run
    self.validate(display_num_errors=True)
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 310, in validate
    num_errors = get_validation_errors(s, app)
  File "/Library/Python/2.7/site-packages/django/core/management/validation.py", line 34, in get_validation_errors
    for (app_name, error) in get_app_errors().items():
  File "/Library/Python/2.7/site-packages/django/db/models/loading.py", line 196, in get_app_errors
    self._populate()
  File "/Library/Python/2.7/site-packages/django/db/models/loading.py", line 75, in _populate
    self.load_app(app_name, True)
  File "/Library/Python/2.7/site-packages/django/db/models/loading.py", line 99, in load_app
    models = import_module('%s.models' % app_name)
  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Library/Python/2.7/site-packages/debug_toolbar/models.py", line 9, in <module>
    dt_settings.patch_all()
  File "/Library/Python/2.7/site-packages/debug_toolbar/settings.py", line 215, in patch_all
    patch_root_urlconf()
  File "/Library/Python/2.7/site-packages/debug_toolbar/settings.py", line 203, in patch_root_urlconf
    reverse('djdt:render_panel')
  File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 503, in reverse
    app_list = resolver.app_dict[ns]
  File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 329, in app_dict
    self._populate()
  File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 267, in _populate
    for pattern in reversed(self.url_patterns):
  File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 365, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/Library/Python/2.7/site-packages/django/core/urlresolvers.py", line 360, in urlconf_module
    self._urlconf_module = import_module(self.urlconf_name)
  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Users/pedrotorres/Documents/work/projects/bparts/netpecasv2/urls.py", line 10, in <module>
    url(r'', include('Common.urls')),
  File "/Library/Python/2.7/site-packages/django/conf/urls/__init__.py", line 26, in include
    urlconf_module = import_module(urlconf_module)
  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/Users/pedrotorres/Documents/work/projects/bparts/Common/urls.py", line 3, in <module>
    from APIMobile.views import request_product_info_by_qrcode
  File "/Users/pedrotorres/Documents/work/projects/bparts/APIMobile/views.py", line 9, in <module>
    from Common.views import resizeImage, token_generator, getWatermarkImage, filterProductsByBrandModelVersionYear, \
  File "/Users/pedrotorres/Documents/work/projects/bparts/Common/views.py", line 34, in <module>
    from Common.tasks import turn_off_demo_mode_new_workshop
  File "/Users/pedrotorres/Documents/work/projects/bparts/Common/tasks.py", line 3, in <module>
    from netpecasv2.celeryapp import app
  File "/Users/pedrotorres/Documents/work/projects/bparts/netpecasv2/celeryapp.py", line 5, in <module>
    from celery import Celery
  File "/Library/Python/2.7/site-packages/celery/__init__.py", line 130, in <module>
    from celery import five
  File "/Library/Python/2.7/site-packages/celery/five.py", line 51, in <module>
    from kombu.five import monotonic
  File "/Library/Python/2.7/site-packages/kombu/five.py", line 52, in <module>
    libSystem = ctypes.CDLL('libSystem.dylib')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 365, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(libSystem.dylib, 6): image not found

Все отлично работало раньше. Не удается найти решение, чтобы исправить это. Я видел этот поток, но не работает: "OSError: dlopen (libSystem.dylib, 6): изображение не найдено" (OS X + macports + Celery 3.1.7)

Раньше у меня не было DYLD_FALLBACK_LIBRARY_PATH. Я попытался:

export DYLD_FALLBACK_LIBRARY_PATH="/usr/lib":$DYLD_FALLBACK_LIBRARY_PATH

но Python не может найти библиотеку, несмотря на то, что она находится в разделе "/usr/lib"

У кого-то была такая проблема?

Ответ 1

Я подозреваю (но не могу подтвердить) System Integrity Protection (SIP) OSX El Capitan предотвращает доступ к вашей папке /usr/lib.

Это было бы экстремально и победить цель функции безопасности, но вы можете попробовать отключить SIP, загрузившись в раздел восстановления OS X, выполнив csrutil disable и перезагрузив... по крайней мере до тех пор, пока не появится другая опция /work -around найденный.

В ArsTechnica есть запись: http://arstechnica.com/apple/2015/09/os-x-10-11-el-capitan-the-ars-technica-review/9/

И аналогичная проблема описана здесь: http://blog.honekamp.net/blog/2015/09/07/el-cap-and-my-printer/

Больше обсуждений с новостями Hacker здесь: https://news.ycombinator.com/item?id=10309576

Ответ 2

pip install --upgrade billiard
pip install --upgrade celery
pip install --upgrade kombu
pip install --upgrade amqp

Это должно работать.

Ответ 3

Я удалю "бильярд, сельдерей, комбу, amqp" эти четыре пакета. Затем переустановите последнюю версию из github, чтобы решить эту проблему.

Ответ 4

Я столкнулся с тем же вопросом, что и сельдерей.

Я сделал несколько быстрых тестов, и вот что я нашел, но не могу полностью связать его по определенной причине:

а. python с ctypes.CDLL( "libSystem.dylib" ) приводит к ошибке, не найденной с изображением.

б. python с ctypes.CDLL( "/usr/lib/libSystem.dylib" ) работает

с. virtualenv python с ctypes.CDLL( "libSystem.dylib" ) работает

Ответ 5

Я также столкнулся с той же проблемой сразу после обновления ОС до OS X El Captain. Отключение SIP делает трюк, но если кому-то неудобно делать это обновление, то 5.py в нескольких модулях в пакетах сайтов поможет. (Я знаю, что это не так хорошо, но все в порядке, пока вы знаете, что делаете)

Обновите места, которые обращаются к DLL, чтобы иметь абсолютный путь в следующих модулях

line 145 of site-packages/amqp/five.py 
line 52 of site-packages/kombu/five.py 
line 42 of site-packages/billiard/five.py 

обновить до:

libSystem = ctypes.CDLL('libSystem.dylib') => libSystem = ctypes.CDLL('/usr/lib/libSystem.dylib')

надеюсь, что это поможет;)

Ответ 6

Переустановка python решила проблему для меня. Используя brew, вы можете просто brew install python снова. Если он говорит, что вам нужно разрешение на запись в /usr/local, попробуйте изменить разрешения на sudo chown -R $(whoami):admin /usr/local, а затем установите python.

Ответ 7

Я попробовал обновить до последних версий этих библиотек от github, но это не помогло. Самое простое решение, которое я нашел, это использовать virtualenv

virtualenv myenv
cd myenv
source bin/activate
pip install celery

Чтобы подтвердить, что это сработало:

python -c "import celery"

Это предпочтительнее отключить основную функцию безопасности ОС, а у virtualenv есть свои (хорошо документированные) преимущества.

Ответ 8

Вы можете удалить текущую версию сельдерея, а затем загрузить ее из http://pypi.python.org/pypi/celery/, создать и установить код sorce.It полезно для меня, и я надеюсь, что и вы.