[Pythonmac-SIG] py2app run errors
William Kyngesburye
woklist at kyngchaos.com
Thu Aug 10 21:25:19 CEST 2006
I have a python script that sets a couple environment vars and runs a
shell script in a Terminal window. It works when run from a Terminal
with 'python doshell.py'. But when packaged into an app with py2app
I get errors.
Here's a simplified version (doshell.py):
#!/usr/bin/env python
import sys
import os
base = os.path.dirname(sys.argv[0])
# options used by myshell.sh (can't use args)
os.environ['STARTBASE'] = base
os.environ['MYOPTION'] = 'shelloption'
shellrun = base + '/myshell.sh'
os.execlp('open', 'open', '-a', 'Terminal.app', shellrun)
# continue doing python stuff...
The error I get:
Traceback (most recent call last):
File "/Users/Shared/src/myshell/dist/doshell.app/Contents/
Resources/__boot__.py", line 137, in ?
_run('doshell.py')
File "/Users/Shared/src/myshell/dist/doshell.app/Contents/
Resources/__boot__.py", line 134, in _run
execfile(path, globals(), globals())
File "/Users/Shared/src/myshell/dist/doshell.app/Contents/
Resources/doshell.py", line 18, in ?
os.execlp('open', 'open', '-a', 'Terminal.app', shellrun)
File "/Library/Frameworks/Python.framework/Versions/2.4/lib/
python2.4/os.py", line 324, in execlp
execvp(file, args)
File "/Library/Frameworks/Python.framework/Versions/2.4/lib/
python2.4/os.py", line 341, in execvp
_execvpe(file, args)
File "/Library/Frameworks/Python.framework/Versions/2.4/lib/
python2.4/os.py", line 379, in _execvpe
func(fullname, *argrest)
OSError: [Errno 45] Operation not supported
2006-08-10 12:11:34.918 CommandDroplet[409] doshell Error
2006-08-10 12:11:34.919 CommandDroplet[409] doshell Error
An unexpected error has occurred during execution of the main script
I've built the app with the semi_standalone option, and the
myshell.sh script is also installed in the app with the resources
option in py2app. Built completely standalone, same error, except
that the os.py lines have no path.
I tried using spawnlp instead, but in the Terminal AND in the py2app
application I get the error:
RegisterProcess failed (error = -50)
I'm just getting my feet wet with Python, so I wouldn't be surprised
if I did something wrong here. Maybe there's a better way to run the
shell script in a Terminal. Maybe something is wrong with argv[0]
when run from the app so the path to run the shell script is wrong.
The error isn't very helpful.
-----
William Kyngesburye <kyngchaos at kyngchaos.com>
http://www.kyngchaos.com/
All generalizations are dangerous, even this one.
More information about the Pythonmac-SIG
mailing list