PIL - libjpeg.so.8: невозможно открыть общий объектный файл: такого файла или каталога нет - PullRequest
17 голосов
/ 05 апреля 2011

Скомпилировал libjpeg v8, PIL 1.1.7 и импорт для _imaging работает в системе Python, но выдает эту ошибку в virtualenv:

libjpeg.so.8: cannot open shared object file: No such file or directory

вот ошибка запускается с помощью интерпретатора python -v внутри virtualenv

>>> import _imaging
dlopen("/home/ygamretuta/dev/py/django/lib/python2.6/site-packages/PIL/_imaging.so", 2);
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libjpeg.so.8: cannot open shared object file: No such file or directory

и вот пути:

/home/ygamretuta/dev/py/django/lib/python2.6/site-packages/distribute-0.6.14-py2.6.egg
/home/ygamretuta/dev/py/django/lib/python2.6/site-packages/pip-0.8.1-py2.6.egg
/home/ygamretuta/dev/py/django/lib/python2.6
/home/ygamretuta/dev/py/django/lib/python2.6/plat-linux2
/home/ygamretuta/dev/py/django/lib/python2.6/lib-tk
/home/ygamretuta/dev/py/django/lib/python2.6/lib-old
/home/ygamretuta/dev/py/django/lib/python2.6/lib-dynload
/usr/lib/python2.6
/usr/lib/python2.6/plat-linux2
/usr/lib/python2.6/lib-tk
/home/ygamretuta/dev/py/django/lib/python2.6/site-packages
/home/ygamretuta/dev/py/django/lib/python2.6/site-packages/PIL

Я использую Ubuntu 10.10, и это вывод uname-a:

Linux ygam-desktop 2.6.35-28-generic #49-Ubuntu SMP Tue Mar 1 14:40:58 UTC 2011 i686 GNU/Linux

Я использую Python 2.6

Я уже следовал следующим инструкциям:

http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

http://www.jooncode.com/2010/12/02/python-pil-jpeg-resync-restart-error-imaging-module-solve/

http://djangodays.com/2008/09/03/django-imagefield-validation-error-caused-by-incorrect-pil-installation-on-mac/

Ответы [ 3 ]

20 голосов
/ 05 апреля 2011

См. Объяснение здесь: Почему Python не может найти общие объекты, которые находятся в каталогах в sys.path?

Быстрое решение - добавить каталог, содержащий libjpeg.so.8в ваш файл /etc/ld.so.conf, а затем запустите ldconfig

5 голосов
/ 25 ноября 2011

Также, если вы выполняете локальную установку Python, вы также можете управлять динамическим связыванием на уровне сеанса, используя переменную среды LD_LIBRARY_PATH: *

 export LD_LIBRARY_PATH=/srv/plone/python/python-2.6/lib
 python
 import _imaging
 ...

Таким образом, вы не сможете сломать саму свою ОС, даже случайно.(Бывает: http://opensourcehacker.com/2011/08/31/zend-server-installation-potentially-kills-your-ssh/)

0 голосов
/ 09 мая 2019

Компиляция библиотеки из исходного кода тоже работает: http://www.ijg.org/files/

Обязательно используйте jpegsrc.v8.tar.gz, если вы работаете в Unix-подобной системе. jpegsr8.zip, похоже, является версией MS и выбрасывает все стандартные проблемы форматирования при сборке.

...