2016-11-27 5 views
0

У меня есть простое приложение, в котором я использую wxpython и libvlc для воспроизведения mp3-файлов. Файл-файл - это текстовый файл с названием каждого файла mp3 и соответствующим именем файла. Простой «для цикла» для чтения каждой строки ...MAC OS & Python скрипт не умеет читать файл при выполнении из Applescript или с Py2app

Когда я запускаю свой сценарий в терминале в ОС MAC, он отлично работает. Но когда я пытаюсь выполнить скрипт через ApplesScript или используя Finder как Py2app, он не может открыть файл?

Выдержка:

`

FILELIST='/tmp/music/playlist.txt' 

def add_song_list(self): 
     try: 
      with open(FILELIST) as fh: 
       for line in fh: 
        songlist=line.rstrip('\n').split(';') 
        theindex = "%s" % self.index 
        self.SongDict[theindex]=songlist 
        #need to append the song title to our ListBox 
        self.list_box.Append(str(songlist[0])) 
        self.index += 1 
     except: 
      print "Error reading playlist file %s" % FILELIST 

`

я получаю диалоговое окно, которое приходит с моим сообщением исключения.

Снова это отлично работает в Linux. Он отлично работает на OS X , если Я выполняю его из окна терминала. Он даже работает с PythonLauncher (но я открываю окно терминала, и это то, что у меня нет).

Однако, это не работает, если «открыть» его из Finder или выполнить из Applescript.

Он работает нормально, если я открываю .App из терминала с помощью команды «открыть».

Есть ли что-то об ОС X при выполнении приложения в режиме «не» терминала, о котором я не знаю, что я нахожусь?

Спасибо.

-Jeremy

ответ

0

С py2app ново для меня, и я обычно пишу все инструменты на Linux, это был опыт.

Сообщение об ошибке было действительно «красной селедкой». Было несколько проблем, и я мог видеть их только, открыв консоль, то есть «open -a console». Тогда я мог видеть несколько вопросов. Теперь, что странно, у меня нет ни одной из этих проблем при работе в Linux. У меня также не было этих проблем при запуске сценария Python в окне терминала в Mac OS.

Так вот были конкретные проблемы: Так как выполнение «Приложения» в OSX не включает все переменные среды, которые являются нормальными в сеансе оболочки терминала, у него не было определено VLC_PLUGIN_PATH, поэтому мой импорт для vlc не удалось. Мне нужно добавить следующую строку в верхней части моего кода: os.environ['VLC_PLUGIN_PATH']='/Applications/VLC.app/Contents/MacOS/plugins'

Далее мой файл, который был мой файл списка воспроизведения (только обычный текстовый файл) обычно будет получить в кодировке Юникод, по крайней мере на платформе Linux я писал это сверху. Что ж, на MAC OS и только когда он был упакован с py2app, он жаловался, что кодировка была неправильной. Опять же, я видел это только в журнале консоли.

Итак, моя работа заключалась в том, чтобы убедиться, что она была закодирована явно. self.list_box.Append (Юникода (ул (Список песен Технический райдер [0]), 'UTF-8'))

Последний вопрос, мне нужно, чтобы удалить попытку за исключением пункта. Я понятия не имею, почему он попал в исключение. Я ленился и просто сделал «с открытым» и удалил предложение try/except, и он отлично работает.

Теперь py2app упаковывает его, и он работает правильно.

-J