Python 2.7 + GDAl загнать в exe

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Python 2.7 + GDAl загнать в exe

Сообщение Prince660 » 09 ноя 2016, 11:17

Есть консольная программа написанная на Python 2.7 с использованием библиотеки GDAL. Её нужно собрать в рабочий exe файл.
(Варианты установить юзерам питон и гдал на машины не подходит)
Пробовал собирать под Win7 x64 и x86 при помощи py2exe.
По инструкции: http://wiki.python.su/%D0%9F%D0%B0%D0%B ... hon/Py2exe
Вылезла ошибка:

Код: Выделить всё

 error: [Errno 2] No such file or directory: 'MSVCP90.dll' 
Вычитал в интернете что нужна Microsoft Visual C++ Redistributable, но её установка не помогла.
Подскажите решение или другой софт.

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Python 2.7 + GDAl загнать в exe

Сообщение trir » 09 ноя 2016, 11:39

но её установка не помогла.
какую именно? Я у себя 15 штук насчитал. Лучше сразу ставить Visual Studio

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Python 2.7 + GDAl загнать в exe

Сообщение freeExec » 09 ноя 2016, 11:41

Вы какой Redistributable качали 2008?

Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Re: Python 2.7 + GDAl загнать в exe

Сообщение Prince660 » 09 ноя 2016, 11:56

Ставил: "Microsoft Visual C++ 2015 Redistributable (x86) - 14.0.24215"
А какую нужно ставить?

trir
Гуру
Сообщения: 5292
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Python 2.7 + GDAl загнать в exe

Сообщение trir » 09 ноя 2016, 12:01


Аватара пользователя
Prince660
Активный участник
Сообщения: 164
Зарегистрирован: 25 мар 2011, 20:12
Репутация: 15
Ваше звание: Питоновод
Откуда: г. Симферорполь
Контактная информация:

Re: Python 2.7 + GDAl загнать в exe

Сообщение Prince660 » 10 ноя 2016, 15:53

Спасибо за совет, но всё оказалось проще чем я думал!

Просто находим недостающую .dll в другой программе пользуясь обычным поиском, а потом копируем её в папку с dllками питона (C:\Python27\DLLs\).

После этого компилятор больше не ругается, а екзешник запускается и работает.

Теперь у меня другая проблема: программа консольная, а консоль не хочет отображать кирриллицу правильно, кучу кодировок перепробовал, пока не помогло.

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

Re: Python 2.7 + GDAl загнать в exe

Сообщение freeExec » 10 ноя 2016, 16:36

По идее это должно помочь http://ss64.com/nt/chcp.html

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Python 2.7 + GDAl загнать в exe

Сообщение Александр Мурый » 10 ноя 2016, 16:56

Варианты есть здесь, а ещё лучше здесь. В последнем используется двойное преобразование:

Код: Выделить всё

'.decode('utf8').encode('cp866')
Проверил - работает.
Редактор материалов, модератор форума

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Python 2.7 + GDAl загнать в exe

Сообщение Ariki » 10 ноя 2016, 20:25

Код: Выделить всё


# -*- coding: utf-8 -*-
# Этот комментарий в начале файла с кодом задаёт кодировку исходного текста.
# Если ваш исходник в кодировке Windows, укажите coding: cp1251
# Все строковые литералы в тексте программы будут в этой кодировке.
btext = 'Это байтовая строка в UTF-8'
# Однако рекомендуется использовать Unicode:
utext = u'Это строка в Unicode'

# # Можно в начале файла сделать так:
# from __future__ import unicode_literals
# utext = 'Теперь все строки по умолчанию в Unicode'
# btext = b'А это строка в UTF-8'

# Декодирование параметров командной строки:
import sys
ufilename = sys.argv[1].decode(sys.getfilesystemencoding())
# Под Windows кодировка файловой системы 'mbcs', под Linux чаще всего 'utf-8'.

# Чтение файла в кодировке UTF-8 и вывод на консоль:
import io
for uline in io.open(ufilename, 'r', encoding='utf-8'):
print(uline.encode(sys.stdout.encoding))
print(u'Выводим в консоль текстовую константу'.encode(sys.stdout.encoding))
print(b'Так тоже можно, но зачем?'.decode('utf-8').encode(sys.stdout.encoding))
# Обычно в консоли Windows кодировка stdin и stdout 'cp866',
# в интерактивных средах 'cp1251', под Linux 'utf-8'.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Python 2.7 + GDAl загнать в exe

Сообщение Ariki » 11 ноя 2016, 13:17

В предыдущем примере упустил пару моментов, дополню сейчас.

Код: Выделить всё


# Если вывод перенаправляется в файл, кодировка стандартного потока вывода
# будет None. Поэтому лучше делать так:
stdout_enc = sys.stdout.encoding or 'utf-8'
print(u'Строка Unicode'.encode(stdout_enc))
# Но если кодировка stdout определена, в него можно выводить строки
# Unicode, и они сами перекодируются правильно:
if sys.stdout.encoding:
print(u'Строка Unicode будет выведена в кодировке консоли')
sys.stdout.write(u'И эта тоже\n')

Ответить

Вернуться в «Общий - ПО»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 26 гостей