Lunatic Python

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

Данный модуль позволяет вызывать питон из луа и луа из питона. С точки зрения Far это даёт возможность пользоваться из макросов многочисленными библиотеками питона.

Пример установки (пути в примере указаны для Python 3.7 x86 - скорректируйте соответственно если у вас Python 3.4/3.6 и/или x64):
  • Установить Python.
  • Скопировать src\out\python37\32bit\python.dll в %FARPROFILE%\Macros\lib32
  • Скопировать демо-макрос src\examples\py-hash.lua в %FARPROFILE%\Macros\scripts. В макрофайле есть таблица Config, где можно указать используемые вами битности.
Оригинальная библиотека и документация - здесь.
Используемый форк этой библиотеки - здесь.
lunatic-python-20190118.7z
(445.64 KiB) Downloaded 271 times
Last edited by Shmuel on Fri 18 Jan, 2019 16:11, edited 5 times in total.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

Latest post of the previous page:

tstr,
Прежде всего (как вы уже наверное поняли), я в Питоне не силён, многие тонкости (и не только) просто не знаю.

У меня установлен стандартный Python 3.6.2 x64 (не анаконда). В путях его нет.
По вашему совету, забросил в %FARHOME% python36.dll и python36.zip - в оба Фара - x86 и x64.

1. py_hash.lua работает в обеих битностях Фара.
2. Сейчас (впервые) попробовал sparkup_lunatic - он не запустился, ошибка вроде как у вас, но есть ещё непонятное мне сообщение в консоли:
Clipboard01.png
Clipboard01.png (30.61 KiB) Viewed 25428 times
Пока идей нет, может потом появятся (в том числе с вашей помощью).
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

tstr, после замены обратных слешей на прямые, у меня заработало:
local dir = debug.getinfo(1,'S').source:match("@(.*)\\"):gsub("\\", "/")
Я у себя ещё добавил защиту от многократных добавлений этого пути в sys.path.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Lunatic Python

Post by tstr »

оказалось что директории поиска модулей портит pygin, буду в соотв. топике описывать.
и похоже что при наличии pygin lunatic получается после require "python" не полноценный - напим. в контексте питона отсутуствует модуль lua, который встроен в lunatic.

скрипт sparkup_lunatic подправил, там вообще постоянно не нужна папка со скриптом в sys.path - достаточно однократной загрузки в питоне модуля sparkup. обновил в соотв. теме.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

tstr wrote: Sun 27 Aug, 2017 12:17обновил в соотв. теме.
Нашёл с трудом, поиском по вашему нику.
На мой взгляд, имеет смысл сделать отдельную тему, и обновления постить в первом сообщении / шапке.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

tstr wrote: Sun 27 Aug, 2017 12:17обновил в соотв. теме.
Новая версия у меня не работает. Похоже на прежнюю ошибку.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Lunatic Python

Post by DrKnS »

tstr wrote: Sun 27 Aug, 2017 12:17директории поиска модулей портит pygin
Не совсем понимаю, как один дополнительный путь там мог всё портить, но да, загружать через манипуляции с sys.path это не очень концептуально. Переделал.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Lunatic Python

Post by tstr »

DrKnS wrote: Sun 27 Aug, 2017 20:37
tstr wrote: Sun 27 Aug, 2017 12:17директории поиска модулей портит pygin
Не совсем понимаю, как один дополнительный путь там мог всё портить, но да, загружать через манипуляции с sys.path это не очень концептуально. Переделал.
вижу что из sys.path пропал Adapters, но ошибка загрузки модулей питона осталась - сообщение о ошибке при вызове py-hash.lua тоже, File Monitor показывает обращение к темже …\<string> .

откорректировал сообщение с ошибкой исключив неактуальную часть, перепостил в теме pygin.
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Lunatic Python

Post by tstr »

Shmuel wrote: Sun 27 Aug, 2017 13:17
tstr wrote: Sun 27 Aug, 2017 12:17обновил в соотв. теме.
Новая версия у меня не работает. Похоже на прежнюю ошибку.
да, ошибка тамже осталась, дооптимизировался…
но у меня она не проявляется, и всякие принты и выводы в файл sys.path в т.ч. с чисто юникодными символами дают правильное содержание c правильными разделителями директорий. чтобы не наступать больше на эти грабли хочется разобраться, не могли бы привести полный путь, где у Вас расположен sparkup_lunatic.lua ?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

tstr wrote: Mon 28 Aug, 2017 06:39хочется разобраться, не могли бы привести полный путь, где у Вас расположен sparkup_lunatic.lua ?
Путь начинается с C:\Users, и этого достаточно для ошибки. Обратные слеши надо либо удваивать, либо заменять прямыми слешами. Ошибка легко воспроизводится с командной строки Питона:
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path.append('C:\Users') File "<stdin>", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape >>> sys.path.append('C:\\Users') >>>
tstr
Posts: 557
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 20 times
Been thanked: 9 times

Lunatic Python

Post by tstr »

пытается юникод разобрать, как и ожидалось.
выводил в файл и пробовал воспроизвести с исправленной строкой, с ":gsub("\\", "/")", все выходные страшно тупил ). вопрос закрыт, спасибо, извините за потраченное время.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

tstr wrote: Mon 28 Aug, 2017 08:01извините за потраченное время
Наоборот, время было потрачено с пользой. Если будете продолжать играться с библиотекой (и делиться впечатлениями), буду только рад.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

Начальный пост темы обновлён (вложение тоже) - добавлена поддержка для Python 3.7.
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Lunatic Python

Post by Tim Sobolev »

А можно получить ссылочку на рабочий вариант для Python 3.8 (x64) ?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

У меня на машине всё ещё Python 3.7.
Если вы готовы собрать для 3.8 сами - добавьте в include и libs\64bit подпапки python38 и наполните их файлами из вашей установки питона, взяв за образец существующие папки python37. Далее скорректируйте src\makefile под свою систему.
Для сборки нужен Visual Studio (только командная строка), у меня стоит 2019. Также используется mingw32-make.exe для запуска src\makefile.

Сожалею, что нет готовой сборки. Если возьмётесь собирать сами, помогу в случае чего.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Lunatic Python

Post by Shmuel »

Может быть кому-нибудь пригодится - собрал DLL для работы с Python 3.12 (только x64).
У меня работает (только пришлось в скриптах исправить на require "312-python").
312-python.dll.7z
(71.2 KiB) Downloaded 36 times
Post Reply

Return to “Обсуждение макросов”