Pyinstaller и xdg-open - PullRequest
       8

Pyinstaller и xdg-open

0 голосов
/ 17 ноября 2018

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

Я использую для разработки на Python редактор PyCharm. Всякий раз, когда я запускаю свой код, который содержит os.system("xdg-open file.pdf") из PyCharm, все работает как положено. Но всякий раз, когда я упаковывал свой код с помощью PyInstaller, эта команда не выполнялась без какого-либо сообщения об ошибке или подсказки, что происходит, что делать или с чего начать поиск, чтобы решить эту проблему (я знаю, что команда os.system() не перехватила ни одно сообщение от запущенного команда, но никакой подсказки нигде нет, вообще ).

Я точно все перепробовал, что можно было сделать. Я пробовал другие пусковые установки, которые я нашел, как exo-open, mimeopen; Я попытался запустить из кода Python внешний сценарий bash, содержащий команды, упомянутые выше в различных комбинациях, я попытался создать внешний двоичный файл Python (используя PyInstaller), который выполняет только команду os.system("xdg-open" + sys.argv[1]) (потому что я вызываю по другому место моей программы внешних двоичных файлов, и она отлично работает), нигде нет понятия, почему это не работает.

Когда я пытаюсь использовать чистую команду xdg-open file.pdf из bash, все работает хорошо. *)

Поскольку я делаю свою программу для Linux и Windows, в Windows такой неисправности нет. Там я использую для просмотра файла PDF команду os.system("start './file.pdf'") и это происходит.

Я не уверен, что является причиной этой проблемы, это может быть проблема PyInstaller, а также системная проблема.

У кого-нибудь есть подобный опыт и, возможно, какая-то подсказка или решение? Ваши ответы будут очень приветствоваться и большое спасибо!

Конфигурация:

  • Linux Mint 18.2 64bit (ядро 4.8.0-53-generic)
  • Графическая среда Xfce4
  • Python 2.7
  • PyCharm 2018 (последняя версия)
  • Bash 4,3
  • PyInstaller 3.4 (устанавливается с помощью pip)

Компьютер - Lenovo ThinkPad T410.

*) Может быть, это может помочь или смущает больше, но в любом случае: в процессе тестирования я попытался также запустить из своей программы чистый терминал, чтобы передать команду xdg-open вручную. Но когда я это сделал, сообщения об ошибке не было, но ничего не происходит. Я также попытался запустить просмотрщик PDF напрямую, с обычного терминала все работает хорошо, но с терминала, открытого моей программой, он запускает просмотрщик PDF, но с количеством ошибок, связанных с GTK, по поводу отсутствующих значков (а file.pdf не открывался как хорошо), поэтому обычно происходит сбой (не было значка и файла не было открыто (кстати, с сообщением об ошибке типа «Открыть mimetype application / octet-stream fails»)). Такое поведение приводит к некоторой проблеме пользователя / пути / среды, но, тем не менее, я совершенно не понимаю, что происходит и как это исправить.

P.S. Я, конечно, сначала попробовал дядю Google, но безуспешно. Да, возможно, что я не нашел ему правильного вопроса, в таком случае, пожалуйста, предложите мне его;)

1 Ответ

0 голосов
/ 15 февраля 2019

Поскольку два месяца назад ответа не было, похоже, никто не заинтересован в этом вопросе.

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

Я недавно обновил ядро ​​4.8 до ядра 4.19.21 и попробовал как просмотрщик PDF / редактор Foxit Reader 2.4.4.0911 (скачано несколько дней назад) (https://www.foxitsoftware.com/downloads/),, так как у меня есть эта конфигурация, открытие PDF-файлов из моей программы работает, даже если я все еще использую PyInstaller 3.4.

Я не совсем уверен, что было источникомиз-за того, что я не установил Foxit Reader в качестве средства просмотра PDF по умолчанию, и он открывается в нем, а также может быть источником проблем из-за некоторых проблем с драйвером видео для ядра / Intel, возможно, это связано с тем, что я удалил Xreader как средство просмотра PDF по умолчанию.Может быть, это была какая-то проблема с mimetypes (я имею в виду, что, например, DoubleCommander или Mutt не уважают настройки системных mimetypes и пытаются открытьфайлы в программе по собственному желанию, и я до сих пор не могу понять, почему и как это изменить), кто знает, когда я только с этим вопросом.

Во всех случаях на Linux Mint 18.2 машина сописанная выше конфигурация теперь работает, как и ожидалось.

...