Lunatic Python

Здесь обсуждается всё, что касается макросов.
tstr
Posts: 500
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 3 times
Been thanked: 5 times

Lunatic Python

Post by tstr » Thu 10 Aug, 2017 22:37

Latest post of the previous page:

DrKnS wrote:
Thu 10 Aug, 2017 20:56
tstr wrote:
Thu 10 Aug, 2017 17:38
но в свете pygin и возможностью настроек его загрузки с помощью python36._pth и pyvenv.cfg
А можно узнать подробности?
пожалуйста, рад хоть чем-то помочь.

подробностей особенных нет, просто наблюдения из попыток применить зоопарк сборок к pygin и Lunatic:
1. понятно что система грузит гвоздями прилинкованный python36.dll доступный через PATH - он в свою очередь смотрит присутствие файлов pyvenv.cfg в папке на уровень и на два выше от загружающего процесса, и берёт из него настройку типа home = C:\CPython-v3.6.1150.0-AMD64 — базовую директорию рантайма (при отсутствии pyvenv.cfg будут взяты настройки из реестра).
2. по ._pth наиболее значимая часть доки: To completely override sys.path, create a ._pth file with the same name as the DLL (python36._pth) or the executable (python._pth) and specify one line for each path to add to sys.path. The file based on the DLL name overrides the one based on the executable, which allows paths to be restricted for any program loading the runtime if desired.
When the file exists, all registry and environment variables are ignored, isolated mode is enabled, and site is not imported unless one line in the file specifies import site. Blank paths and lines starting with # are ignored. Each path may be absolute or relative to the location of the file. Import statements other than to site are not permitted, and arbitrary code cannot be specified.

что нам это даёт: имея несколько версий рантайма можем без реестра и PATH что переключаться на нужную, что выбирать портабельную (или embedded) для каждой битности ФАР свою.
и маленьким бонусом - использовать для ФАР разной битности общие папки/окружения (начиная с общего python36.zip), благо что теперь лодером грузятся разные бинарники (например _yaml.cp36-win_amd64.pyd и _yaml.cp36-win32.pyd).
ну а о удобстве установки/обновления плагинов с их зависимостями в подпапки плагинов в виде микро-окружений прямо pip-ом с pypi и гитхаба и говорить нечего.

tstr
Posts: 500
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 3 times
Been thanked: 5 times

Lunatic Python

Post by tstr » Thu 10 Aug, 2017 22:40

Shmuel wrote:
Thu 10 Aug, 2017 21:37
Но не хватает для библиотеки Lunatic Python (в том виде как она есть у нас сейчас).
ясно, жаль. но я ожидал что всё будет не так просто… )

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Lunatic Python

Post by Shmuel » Fri 11 Aug, 2017 03:41

tstr wrote:
Thu 10 Aug, 2017 22:40
я ожидал что всё будет не так просто… )
Посмотрел поглубже: если недостающие в "Limited API" пару функций можно было бы и заменить, то отсутствие доступа к полям структуры PyTypeObject делает задачу практически невыполнимой.

Можно, чтобы не терять совместимость с XP, просто собирать 2 версии библиотеки: одна для Python 3.4, другая - для Python 3.6.

tstr
Posts: 500
Joined: Thu 16 Apr, 2009 16:15
Has thanked: 3 times
Been thanked: 5 times

Lunatic Python

Post by tstr » Fri 11 Aug, 2017 05:04

да, на данный момент это оптимальный выход.

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

Lunatic Python

Post by Shmuel » Fri 11 Aug, 2017 23:34

Наконец-то разобрался, отчего демо-макрос не выдерживал перезагрузки макросов и вызывал падение при запусках после перезагрузки. Проблема - в библиотеке, и починить её будет не просто. Однако есть способ обойти эту проблему - не вызывать require "python" из функции action() макроса, а вызывать в начале макрофайла. Поправленный макрос приложен.
py-hash-20170812.7z
(1.71 KiB) Downloaded 5 times

Post Reply

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