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 полезно для меня, и я надеюсь, что и вы.