2013-12-13 3 views
6

Во-первых, я знаю об этом similar SO Question, но моя проблема немного отличается, и ответ в этом вопросе не помог решить мою проблему. Итак, я создаю новый пост здесь.Ошибка загрузки DLL Python Zbar

Я скачал Zbar Installler из http://zbar.sourceforge.net/download.html и сумел не успешно (сообщение об ошибке) установлена.

Но, когда я запускаю следующий сценарий,

import zbar 
from PIL import Image 

# create a reader 
scanner = zbar.ImageScanner() 

# configure the reader 
scanner.parse_config('enable') 

# obtain image data 
pil = Image.open('zbartest2.png').convert('L') 
width, height = pil.size 
raw = pil.tostring() 

# wrap image data 
image = zbar.Image(width, height, 'Y800', raw) 

# scan the image for barcodes 
scanner.scan(image) 

# extract results 
for symbol in image: 
    # do something useful with results 
    print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data 

# clean up 
del(image) 

Это дает мне сообщение об ошибке о том, что DLL нагрузки терпят неудачу.

Traceback (most recent call last):

File "D:\Profiles\e492507\Desktop\barcode reader\test.py", line 1, in import zbar ImportError: DLL load failed: The specified module could not be found.

, но в отличие от аналогичного SO вопрос я уже упоминал выше, когда я печатаю это в питона IDLE оболочки, она работает без каких-либо проблем.

import zbar 
zbar.version() 

(0, 10)

Что является причиной этой проблемы и как это исправить?

FYI: Я использую Python 2.7.3 на Windows XP Pro 32 бит

UPDATE: 1

я узнал, что если я скопировать скрипт и файл в папку питона C:\Python27\ он отлично работает без каких-либо проблем.

Однако, как только я перемещаю сценарий и изображение в другие места, я получил то же сообщение об ошибке, которое было опубликовано выше.

Как исправить это, чтобы я мог выполнять свой сценарий в любом месте на моем компьютере до тех пор, пока изображение штрих-кода доступно?

UPDATE: 2(ТОЛЬКО ДЛЯ INFO: НЕ ПРЯМО СВЯЗАНО К ВОПРОСУ)

Я не в состоянии решить эту проблему, используя все методы я обнаружил так far.So, я я выхожу с моим собственным глупым решением.

Я собираюсь использовать простую таблицу, нарисованную reportlab, вместо Barcodes и цвет клеток соответственно (черный для 1 и белый для 0), чтобы представлять числа в двоичном формате.

Таким образом, число 69 будет что-то вроде этого

enter image description here

Тогда я могу использовать PIL обнаружить черные и белые квадраты и скрытые его обратно в двоичный затем в десятичную. FYI, я имею дело только с десятичными числами. Нет алфавитов и других материалов. Я знаю, что это довольно глупо, но отчаянные времена требуют отчаянных мер: P

ответ

1

версия Окна zbar установлена ​​(zbar-0.10-setup.exe) включает в себя «только программы командной строки», как указано в файле README.windows. В нем также упоминается, что «Текущий (0.10) выпуск Zbar поставляется только с программами командной строки «в Запуск Zbar секции Windows Installation Guide

В разделе установщика Windows на ZBar bar code reader - Download странице он говорит:.

       » Примечание что порт Windows находится в нестабильной фазе тестирования ».

Другими словами, он еще не считается пригодным для использования в интерпретаторе Python для Windows.

+0

Я могу запустить тот же точный скрипт на моем компьютере 'windows 8', используя тот же установщик' zbar' с той же версией python. Тем не менее, я не могу заставить его работать на моем компьютере windows xp. –

+1

Как говорят документы, он нестабилен. – martineau

3

Похоже, что он работает, когда зависимые DLL находятся где-то в вашем PATH, и он ломается, когда вы перемещаете их в другом месте. Ошибка в частности говорит о том, что она не может загрузить DLL (или одну из ее зависимостей), поэтому я не думаю, что это проблема, связанная с документированной нестабильностью в системах Windows.

Чтобы устранить это как возможность, попробуйте следующее:

  1. Щелкните правой кнопкой мыши Мой компьютер , а затем нажмите кнопку Свойства .
  2. Кликните на Продвинутый tab.
  3. Нажмите Переменные окружения.
  4. Найдите и выберите запись PATH, а затем нажмите Редактировать.

В диалоговом окне, где он говорит Значение переменной, добавьте точку с запятой, а затем путь к папке, в которой была установлена ​​libzbar-0.dll.

Так что, если libzbar-0.dll есть, скажем, C:\ZBar\Bin и существующий PATH значение:

C:\folder1;C:\folder2;C:\some other folder

Затем измените значение переменной на:

C:\folder1;C:\folder2;C:\some other folder;C:\ZBar\Bin

Затем нажмите OK, чтобы сохранить все изменения и - для overkill - перезагрузка. Это связано с тем, что большинство приложений только считывают переменные среды при первом запуске, и иногда это путает, если вы не уверены, действительно ли приложение было перезапущено или было просто сведено к минимуму.

Теперь посмотрите, можно ли запустить скрипт Python из других папок.

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