понедельник, 5 сентября 2011 г.

Исполняемый exe файл в Python3

  Иногда возникает необходимость выполнять скрипт на пользовательских машинах по windows, но без установки интерпретатора python. Это могут быть самые разнообразные ситуации, но сводиться они к созданию исполняемого exe файла. В python2 для этой цели служит инструмент под названием py2exe, но, к сожалению, python3 он не поддерживает. Поэтому для создания исполняемого exe файла в python3 мы воспользуемся cx_Freeze.
  Итак, начнем.
1) Скачиваем и устанавливаем cx_Freeze. В папке с Python появиться файл cxfreeze.bat - это основной рабочий файл cx_Freeze (У меня находиться в C:\Python32\Scripts\cxfreeze.bat)
2) Создаем две папки C:\Python32\Scripts\src
                                                    и
                                     C:\Python32\Scripts\dst
   для исходных и результирующих файлов.
3) Помещаем питон скрипт который мы хотим сделать exe файлом в папку C:\Python32\Scripts\src
4) Создаем файл run.bat (C:\Python32\Scripts\run.but) с следующим содержимым:

cd .
del dist\*.* /Q
call cxfreeze src\hello.py --target-dir dist
pause

  Данный скрипт в текущей директории удаляет из папки dist все файлы, вызывает cxfreeze, и указывает откуда брать исходный файл, и куда помещать результат. Вот мы и имеем исполняемый файл под python3.))
  Но есть одно "НО". Помимо самого exe файла, в папке будут некоторые необходимые для его функционирования файлы и библиотеки. Это несколько не то что мы ожидали (по крайней мере, я в свое время))))
  Здесь нам на помощь приходит утилита от windows под названием iexpress, которая  позволяет создавать исполняемые самораспаковывающиеся архивы (C:\WINDOWS\system32\iexpress.exe).
  Запускаем утилиту. Первое окошко спрашивает, хотим ли мы создать новый или модифицировать старый архив - выбираем новый (точнее просто нажимаем далее), в следующем окошке тоже нажимаем далее (выбор типа архива), в следующем окне вписываем строчку которая будет отображаться в процессе распаковки(при желании), в следующем окне тоже далее (окно подтверждения установки), далее тоже далее (лицензионное соглашение), в следующем окне добавляем файлы которые были созданы (из папки dist). Следующее окно предлагает указать программу которая будет запущена после распаковки архива - из выпадающего списка выбираем наш exe файл hello.exe. В следующем окне выбираем далее (размер окна), в следующем по желанию вписываем сообщение, выводимое после распаковки. В следующем  окне выбираем папку, куда поместить наш самораспаковывающийся архив с присвоением ему имени. Далее появляется окно с запросом о необходимости перезагрузки системы после выполнения - выбираем no restart, следующее окно спрашивает куда, если надо, поместить конфиг файл - выбираем don't save.
  В результате всех действий имеем один исполняемый файл.

и опять P.S. )))
Если случилось так, что Вам эта статья помогла,  или вдруг возникло непреодолимое желание сделать что либо хорошее, можете присмотреться к рекламным объявлениям на этой страничке, и просмотреть особо понравившееся. )))

P.P.S
Столько просьб у любимой всегда!
У разлюбленной просьб не бывает.
                                    (А. Ахматова)
P.P.P.S
Статья написана по мотивам 

среда, 10 августа 2011 г.

Отключение перехода на youtube.com при клике по видеролку в Drupal (модуль Video Filter)

Рано или поздно в жизни каждого Drupal-льщика наступает такой момент, когда приходиться отображать на сайте под CMS Drupal видеоролики.  Одним из способов решения  является использование модуля под названием Video Filter
Данный модуль вполне справляется со своими задачами, но... Не знаю как кого, а меня бешено раздражает, когда кликая(в том числе случайно) по видеоролику с youtube, осуществляется переход на youtube.com.  Кстати  это встречается повсеместно, но если это на нашем сайте нас же и не устраивает - то нам это и решать...
Данная проблема связана с версией плеера. Не буду вдаваться в подробности, кому надо - почитает.
                  Решение следующее:
Заходим в папку модуля, находим файл video_filter.module, ищем эти строки
 
// First match is the URL, we don't want that as a class.
  unset($video['codec']['matches'][0]);
  foreach ($video['codec']['matches'] AS $match) {
    $classes[] = 'vf-' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '', $match));
  }
  $output .= '<object class="' . implode(' ', $classes) . '" type="application/x-shockwave-flash" ';

/*** Эту строчку ***/
$output .= 'width="' . $video['width'] . '" height="' . $video['height'] . '" data="' . $video['source'] . '">' . "\n";
 /*** заменяем на эту ***/
$output .= 'width="'.$video['width'].'" height="'.$video['height'].'"data="'.$video['source'].'&amp;version=3&amp;fmt=22" >'."\n";

  $defaults = array(
    'movie' => $video['source'],
    'wmode' => 'transparent',
    'allowFullScreen' => 'true',
  );
 
И получаем ПРИМЕР  вот оно... СЧАСТЬЕ, озарило экран монитора, кликай не кликай - а кроме веселого треугольничка и пары не менее веселых палочек (play и pause)   ничего и не увидишь, и ты с усталыми глазами и чувством выполненного долга кладешь в давно остывший чай три ложки сахара, и думая, что подпитал головной мозг дозой глюкозы, ползешь довольный в сторону кровати.

P.S.
Если случилось так, что Вам эта статья помогла,  или вдруг возникло непреодолимое желание сделать что либо хорошее, можете присмотреться к рекламным объявлениям на этой страничке, и просмотреть особо понравившееся. )))

P.P.S.
Работало с версиями
7.x-3.0-beta2 и 6.x-2.7

P.P.P.S.
Угоден Зевсу бедный странник,
Над ним святой его покров!..
Домашних очагов изгнанник,
Он гостем стал благих богов!..