Python 如果从py2app运行,则ffmpeg不工作

Python 如果从py2app运行,则ffmpeg不工作,python,tkinter,ffmpeg,py2app,Python,Tkinter,Ffmpeg,Py2app,我正在尝试建立一个简单的应用程序,包含2个mp4文件。如果我从命令行运行它,它可以正常工作,但是如果我从py2app应用程序运行它,它就不能工作。如果我在控制台的py2app中运行应用程序(例如'dist/addTag.app/Contents/MacOS/addTag'),它就可以正常工作。只有双击应用程序才能运行它。有什么想法吗?代码如下 #! /usr/bin/python import argparse import ffmpeg import os import shutil impo

我正在尝试建立一个简单的应用程序,包含2个mp4文件。如果我从命令行运行它,它可以正常工作,但是如果我从py2app应用程序运行它,它就不能工作。如果我在控制台的py2app中运行应用程序(例如'dist/addTag.app/Contents/MacOS/addTag'),它就可以正常工作。只有双击应用程序才能运行它。有什么想法吗?代码如下

#! /usr/bin/python
import argparse
import ffmpeg
import os
import shutil
import sys
from Tkinter import *
import time

fields = 'Input Video', 'Tag Video', 'Output Name'

def fetch(entries, bu, lb, rt):
    bu['state'] = 'disabled'
    lb['text'] = 'working'
    rt.update()
    ffmpeg.concat(ffmpeg.input(entries[0][1].get()), ffmpeg.input(entries[1][1].get())).output(os.path.expanduser("~/desktop/")+entries[2][1].get()).run()
    bu['state'] = 'normal'
    lb['text'] = 'Ready'
    rt.update()


def makeform(root, fields):
   entries = []
   for field in fields:
      row = Frame(root)
      lab = Label(row, width=15, text=field, anchor='w')
      ent = Entry(row)
      row.pack(side=TOP, fill=X, padx=5, pady=5)
      lab.pack(side=LEFT)
      ent.pack(side=RIGHT, expand=YES, fill=X)
      entries.append((field, ent))
   return entries

if __name__ == '__main__':
   root = Tk()
   root.title("Video Maker")
   ents = makeform(root, fields)
   root.bind('<Return>', (lambda event, e=ents: fetch(e))) 
   label = Label(root, text="Ready")
   label.pack(side=LEFT)  
   b1 = Button(root, text='Make Video',
          command=(lambda e=ents: fetch(e, b1, label, root)))
   b1.pack(side=LEFT, padx=5, pady=5)
   b2 = Button(root, text='Quit', command=root.quit)
   b2.pack(side=LEFT, padx=5, pady=5)

   root.mainloop()
#/usr/bin/python
导入argparse
导入ffmpeg
导入操作系统
进口舒蒂尔
导入系统
从Tkinter进口*
导入时间
字段='输入视频','标记视频','输出名称'
def提取(条目、bu、lb、rt):
bu[“状态”]=“已禁用”
lb['text']='working'
rt.update()
ffmpeg.concat(ffmpeg.input(条目[0][1].get()),ffmpeg.input(条目[1][1].get()).output(os.path.expanduser(“~/desktop/”)+条目[2][1].get()).run()
bu[“状态”]=“正常”
lb['text']='Ready'
rt.update()
def makeform(根,字段):
条目=[]
对于字段中的字段:
行=帧(根)
lab=标签(行,宽度=15,文本=字段,锚点=w')
ent=条目(行)
行包装(侧面=顶部,填充=X,padx=5,pady=5)
实验室包装(侧面=左侧)
ent.pack(侧面=右侧,展开=是,填充=X)
条目。追加((字段,ent))
返回条目
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
root=Tk()
root.title(“视频制作者”)
ents=makeform(根,字段)
root.bind(“”,(lambda事件,e=ents:fetch(e)))
标签=标签(根,text=“就绪”)
标签.包装(侧面=左侧)
b1=按钮(根,text='Make Video',
命令=(lambda e=ents:fetch(e,b1,label,root)))
b1.包装(侧面=左侧,padx=5,pady=5)
b2=按钮(root,text='Quit',command=root.Quit)
b2.组件(侧面=左侧,padx=5,pady=5)
root.mainloop()

您是否收到错误消息?没有。应用程序似乎到达了ffmpeg.concat(..).run()行并停止了。我没有使用osx,但在windows中,我已经遇到了问题,双击python文件启动了错误的python版本/venv,而它在控制台上运行良好。这可能是这里的问题吗?嗯,在OSX上,它打开了应用程序,我看到了窗口,它似乎没有运行FFMPEG,我尝试将它与应用程序捆绑,但也不起作用。运行python setup.py py2app--模拟shell环境修复了它