OutWiker 3.0.0.872 unstable

OutWiker 3.0.0.872 unstable

Разработка OutWiker-а постепенно движется к тому моменту, когда очередную версию можно будет назвать стабильной. На самом деле с точки зрения работы программы и сейчас все достаточно неплохо, по крайней мере критических ошибок, которые мешают пользоваться программой нет, или по крайней мере я о них не знаю :). Но хочется еще навести красоту в коде программы и облегчить процесс сборки.

Сегодня выложил следующую нестабильную версию OutWiker под номером 3.0.0.872. В новой версии не много изменений, заметных пользователю. К таким изменениям можно отнести, пожалуй, только обновление немецкой локализации, теперь программа переведена на немецкий язык полностью, за что спасибо всем тем, кто участвовал в переводе на сайте crowdin.com. Если бы еще доделали украинский перевод, то было бы вообще здорово. Сейчас там недопереведено всего лишь 3% от общего количества строк.

В комментариях к прошлым сборкам мне писали о том, что в сборке под Windows то присутствуют файлы с именами, начинающиеся с api-ms-win-core-*.dll, то их не было, и OutWiker не запускался. Поэтому хочу дать некоторые пояснения относительно этих файлов. Если коротко, то проблему должна решить установка библиотек Visual C++ Redistributable, которые требуется для многих программ, а крупные программы включают инсталятор этих библиотек в свой инсталятор. В некоторых случаях под Windows 7 может понадобиться установить обновление KB2999226, которое исправляет совместимость приложений, скомпилированных в Windows 10, в Windows 7. Это может быть актуально, потому что OutWiker собирается на компьютере с Windows 10.

Включение файлов api-ms-win-core-*.dll в программу — плохая идея, потому что на самом деле эти файлы всего лишь заглушки, перенаправляющие вызовы в нужные DLL (сам я подробно эти файлы не изучал, поэтому, если что, поправьте меня в комментариях). При копировании этих файлов проблема может возникнуть из-за разных версий библиотек на компьютере, на котором собирался OutWiker и на компьютере пользователей.

Есть и формальная причина не включать файлы api-ms-win-core-*.dll в программу: разработчики не имеют права распространять эти файлы, поскольку они являются составной частью Windows.

Если вы столкнулись с проблемой отсутствия файлов api-ms-win-core-*.dll, то попробуйте эти два способа, и я буду благодарен вам, если вы мне напишете, какой способ вам помог.

А теперь, поскольку особых заметных изменений в программе нет, я вам расскажу о том, чем я занимался с момента выхода прошлой нестабильной версии.

Самое крупное внутреннее изменение, которое произошло, связано с проверкой орфографии. Когда-то давно в OutWiker для проверки орфографии во всех операционных системах: и в Windows, и в Linux, использовалась библиотека pyenchant. После того, как под Linux я стал упаковывать OutWiker в snap-пакет, с этой библиотекой возникли проблемы, и пришлось под Linux использовать другую библиотеку — hunspell, для которой, к сожалению, не было сборки под Windows. Все бы ничего, но библиотека pyenchant (которая до сих пор использовалась под Windows) давно не обновлялась, и для нее не было сборки под 64-битный Python. С одной стороны, это не критично, потому что я пока не вижу смысла собирать 64-битную сборку OutWiker под Windows, но это мешало другим пользователям, которые пробовали запустить Outwiker из исходников. Все-таки сейчас по умолчанию в основном все ставят 64-битый Python, и мне приходилось говорить, что OutWiker под Windows работает только с 32-битным Python. Это раздражало, и, к тому же, не люблю ситуации, когда под разные операционные системы используются разные библиотеки.

Недавно у библиотеки pyenchant произошло возрождение. Как я понял, за нее взялся новый разработчик. Он подготовил новые пакеты, которые работают под всеми операционными системами и с разными версиями Python. Все бы ничего, но разработчик обновил библиотеку enchant, вокруг которой работает pyenchant, а в новых версиях enchant была удалена важная для меня функциональность — возможность указывать пути, по которым нужно загружать файлы словарей. Автор знает об этой проблеме, но пока решения нет.

Тогда месяц назад (или даже больше) у меня возникла идея, что надо бы взять ситуацию в свои руки и написать свою Python-оболочку над hunspell, которая бы работала и под Windows, и под Linux. Для этой цели я начал изучать инструменты. Под руку мне попался SIP, с которым я начал разбираться, поигрался на простых примерах, а потом загорелся желанием написать статью об этой утилите. Недели три я писал статью, которую недавно выложил в двух частях.

Неделю назад я решил двинуться дальше и попробовать начать делать Python-обертку над hunspell, но перед этим решил глянуть на PyPi, может быть найду что-то готовое для проверки орфографии. И нашел оболочку вокруг той самой hunspell, библиотека называется CyHunspell. На github-е эта библиотека набрала пока еще не много звезд, но она не выглядит заброшенной. Последняя версия вышла в ноябре прошлого года. Было сначала некоторое недоверие (почему я ее раньше не видел или не обратил внимания?), но все же решил ее попробовать.

Оказалось, что ее интерфейс сильно напоминает тот, что используется в библиотеке hunspell под Linux. Это не удивительно, все-таки это обертка над той же библиотекой. Благодаря этому удалось достаточно быстро адаптировать код, использующий hunspell под библиотеку CyHunspell. А дальше оставались детали. Благодаря имеющимся тестам сразу выявились проблемные места, которые исправил. Адаптировал сборку под Windows под новую библиотеку. Потом стал использовать CyHunspell и под Linux — там тоже проблем с библиотекой не возникло.

В итоге теперь во всех операционках используется CyHunspell, и под Windows должно быть не важно, Python какой разрядности используется, хотя, честно говоря, под Python x64 я еще не пробовал запускать. Заодно это позволило чуть почистить код и убрать некоторые костыли, созданные для работы с pyenchant. Надеюсь, что проблем с новой библиотекой не возникнет.

Про более мелкие внутренние исправления я уже не буду говорить, не стоят они того. Еще раз напомню, что последнюю версию OutWiker можно скачать с этой страницы.

OutWiker в социальных сетях:

Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 1, средняя оценка: 5,00)
Загрузка...

комментариев 11

  1. unreal666:

    Только под виндой (по крайней мере Win 7) не так просто поставить модуль hunspell, от которого зависит этот CyHunspell, т.к. он компилится из исходников. То одно ему не хватает, то другого.
    Сейчас как раз мучаюсь с этим — ставлю на виртуалке полноценный VS 2015 для попытки компиляции hunspell, а точнее libhunspell, т.к. модулю hunspell нужен libhunspell.lib и, возможно, libhunspell.dll.

    И еще. Обновил python с 3.7.2 на 3.8.3 и wxPython с 4.0.х на 4.1 и посыпались ошибки:

    1. Ошибки, связанные с ultimatelistctrl.py (наверно надо обновить из исходников нового wxPython) и еще какие-то, связанные с wxPython
    2. Вылезли предупреждения по части кода, использующего для сравнения оператор is, где правая часть число или строка, т.е. вида «if var is 0» и «if var is not »», т.к. это не корректно, хоть CPython такое и позволяет.

  2. unreal666:

    кавычки запоролись: в двух кавычках-елочках первая кавычка — это две одинарные кавычки.

  3. Jenyay:

    Возможно, мне повезло, потому что у меня стояла VS 2019 и никаких специальных телодвижений для сборки делать не пришлось. Я еще удивился, что сборка прошла так легко.

    По поводу wxPython 4.1, да, в этой версии могут быть несовместимости, поэтому я пока не хочу переходить на эту версию до обновления стабильной версии OutWiker.

  4. unreal666:

    А ты ставил полный VS 2019 (т.е. IDE) или только C++ Build Tools (Средства сборки C++)?

  5. unreal666:

    А то с C++ 2015 Build Tools модуль hunspell у меня до конца не компилится. Ему для сборки понадобился rc.exe, которого нет в C++ 2015 Build Tools.

  6. Jenyay:

    Я ставил полную бесплатную версию.

  7. unreal666:

    Поставил VS 2019 («набор», связанный с C++). Один фиг. Сначала матерился на отсутствие libhunspell.lib. Потом через несколько минут вообще потерял (не видит почему то) VS 2019 и требует поставить 2015. Притом, что я ничего такого не делал, только VirtualBox запустил. Глюк какой-то ;(

    Можешь просто на какой-нибудь файлообменник залить папки, связанные с hunspell, из \Lib\site-packages ?

  8. Jenyay:

    Собрал яйцо и закачал сюда — https://jenyay.net/uploads/Outwiker/Dev/CyHunspell-1.3.4-py3.8-win32.egg

    Вообще странно, что возникли проблемы с компиляцией. Я сейчас посмотрел лог сборки, после запуска «python setup.py install —user» скрипт сам скачал нужные библиотеки, а какие-то скомпилированные библиотеки уже лежат в исходниках.

  9. unreal666:

    А блин. А я пытался ставить пакет hunspell, а не CyHunspell.
    Правда я сейчас доигрался с этими переустановками VS, что pip вообще не видит ни VS 2015, ни VS 2019 🙁

  10. unreal666:

    спасибо

  11. Jenyay:

    Вот как раз из-за того, что hunspell мне тоже не удалось скомпилировать под Виндой, я и задумался о том, чтобы поменять библиотеку. 🙂

Leave a comment

Subscribe without commenting