Pygin — Python adapter

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Pygin — Python adapter

Post by DrKnS » Wed 30 Dec, 2015 17:52

Image

Не прошло и трёх лет, как у меня дошли руки набросать демо для Python.
Умеет добавлять пункт в меню плагинов и показывать сакральную фразу под панелями.

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Python adapter

Post by cmd.exe » Sun 03 Jan, 2016 20:46

Latest post of the previous page:

DrKnS wrote:Питон не особо умеет выгрузку вообще. Но перегрузить вроде бы можно. Версия в шапке обновлена.
Но мы можем reload(module).
Для Python 2 использования встроенной функции перезагрузки ():
reload(module)
Для Python 2 и 3,2-3,3 использования перезагрузки модуля с имп:
imp.reload(module)
Но imp устарела начиная с версии 3.4 в пользу importlib, так что используйте:
importlib.reload(module)
Возможно добавить такую возможность в pygin?
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Python adapter

Post by DrKnS » Sun 03 Jan, 2016 21:02

Так в процитированном же уже.

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Python adapter

Post by cmd.exe » Sun 03 Jan, 2016 22:41

А возможно добавить настройки директорий где находятся скрипты и ддлки? А то я тут по граблям походил с часок...
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Python adapter

Post by DrKnS » Sun 03 Jan, 2016 23:24

cmd.exe wrote: А возможно добавить настройки директорий где находятся скрипты и ддлки?
См. исходную тему - это адаптер. Он не решает, откуда ему грузить, он грузит, что дают.
cmd.exe wrote: А то я тут по граблям походил с часок...
readme.txt в архиве же.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Python adapter

Post by gotar » Mon 04 Jan, 2016 01:41

Правильно ли я понимаю, что идея подавать на вход функции IsPlugin каталоги Вам категорически не нравится? Нельзя ли в архив класть файл whatsnew.txt.

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Python adapter

Post by DrKnS » Mon 04 Jan, 2016 02:07

gotar wrote: Правильно ли я понимаю, что идея подавать на вход функции IsPlugin каталоги Вам категорически не нравится?
Я повторю: см. исходную тему - это адаптер. На вход подаёт фар, для фара плагином бывает только файл, так сложилось исторически.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Python adapter

Post by gotar » Mon 04 Jan, 2016 10:07

Как обращаться к функциям из структуры FarStandardFunctions?

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Python adapter

Post by DrKnS » Mon 04 Jan, 2016 10:23

Пока никак.

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Python adapter

Post by cmd.exe » Mon 04 Jan, 2016 13:17

DrKnS wrote: См. исходную тему - это адаптер. Он не решает, откуда ему грузить, он грузит, что дают.
Я про пути которые pygin читает из path функцией AddToPythonPath, если не нашли питон то выдать ошибку. А то не понятно что ему нехватает.
path=%path%;D:\Environments\Python35\x64\Scripts\;D:\Environments\Python35\x64\ не помагает, плагин не отрабатывает если при старте фара не нашёл пути до питона.
По этому в переменные среды системы, добавить данные пути. Причём в самое начало, иначе не находит.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
zg
zero-gravity
Posts: 5266
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 44 times
Contact:

Python adapter

Post by zg » Mon 04 Jan, 2016 13:50

видимо в path есть пути до более старого питона, не?

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Python adapter

Post by DrKnS » Mon 04 Jan, 2016 13:51

cmd.exe wrote:Я про пути которые pygin читает из path функцией AddToPythonPath, если не нашли питон то выдать ошибку.
Смешалисьвкучуконилюди

Адаптер ничего не читает из %path% и не ищет питон.
Зависимость от python35.dll статическая, ищет её Windows, поэтому надо прописывать в %path%.
AddToPythonPath - это то, откуда питон будет загружать конечный скрипт по имени и к загрузке самого питона оно не относится.

User avatar
cmd.exe
Posts: 333
Joined: Fri 16 Apr, 2010 18:26
Location: Нижний Новгород
Has thanked: 170 times
Been thanked: 5 times
Contact:

Python adapter

Post by cmd.exe » Mon 04 Jan, 2016 22:42

DrKnS wrote: Смешалисьвкучуконилюди
Все дело в том что pigin.dll читает path на момент запуска фара. Его нельзя загрузить динамически. После добавления путей до питона в path (я использую Environment Manager) запустить фар из фара.
I've been using Vim for about 2 years now, mostly because I can't figure out how to exit it. (c) I Am Devloper
I know nothing except the fact of my ignorance. (с) Socrates

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Sun 10 Jan, 2016 15:29

DrKnS wrote:
techie wrote: А нельзя выбрать с какой версией дружить? Или выбрать её автоматом в расчёте на то, что питоновский код совместим между версиями.
Нельзя, увы. Линкуется с pythonNN.dll статически, другого способа я не знаю.
Говорят, что можно LoadLibrary + GetProcAddress. Не?

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Sun 10 Jan, 2016 15:47

DrKnS wrote:
techie wrote: Когда ошибка в скрипте, непонятно как дебажить. Всё что есть это вот.
Ошибка выводится в stdout. Если запусить с погашенными панелями, будет видно.
Если ошибка синтаксиса, типа , то вот общее сообщение "Error loading plugin" показывается при старте, в меню ничего нет и никаких сообщений за панелями не видно.

Как кстати посмотреть версию pygin.dll? Никаких строчек вида "version 1.0" внутри не обнаружено.
Attachments
nohello.png
nohello.png (3.73 KiB) Viewed 2684 times

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Sun 10 Jan, 2016 16:02

Ещё последняя версия крэшится, если скопировать "helloworld.py", а не "helloworld" в Plugins.

User avatar
DrKnS
Posts: 4626
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 123 times
Contact:

Python adapter

Post by DrKnS » Sun 10 Jan, 2016 16:32

techie wrote:Говорят, что можно LoadLibrary + GetProcAddress. Не?
Это ж надо бойлерплейта написать ещё больше, чем для интеграции с Far.
techie wrote:общее сообщение "Error loading plugin" показывается при старте, в меню ничего нет и никаких сообщений за панелями не видно.
Следи за руками:
- гасим панели
- сохраняем настройки
- перезапускаем
techie wrote:Как кстати посмотреть версию pygin.dll? Никаких строчек вида "version 1.0" внутри не обнаружено.
Пока никак. Адаптер, в принципе, сообщает фару свою версию при загрузке, но дальше она нигде не используется. Надо будет, наверное, в far:about добавить.
techie wrote:Ещё последняя версия крэшится, если скопировать "helloworld.py", а не "helloworld" в Plugins.
Точки в именах папок нельзя, да.

User avatar
techie
Posts: 761
Joined: Mon 03 Oct, 2005 22:42
Has thanked: 28 times
Been thanked: 2 times

Python adapter

Post by techie » Sun 10 Jan, 2016 16:58

DrKnS wrote: Это ж надо бойлерплейта написать ещё больше, чем для интеграции с Far.
Скока? Может написано уже всё? Как Far свои плагины подгружает? Если показать как выглядит этот бойлерплейт, то я могу попробовать автоматом снегерить или погуглить уже готовый по ключевам словам.
DrKnS wrote: Следи за руками:
Эээ. Это каждый раз так делать при вылете? :o
DrKnS wrote:Точки в именах папок нельзя, да.
Так это, в дистрибутиве оно с точкой.
Last edited by techie on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятан оверквотинг

Post Reply

Return to “Разработка плагинов”