5 // Created by foosh on 7/30/08.
6 // Copyright __MyCompanyName__ 2008. All rights reserved.
9 #import <Python/Python.h>
10 #import <Cocoa/Cocoa.h>
12 int main(int argc, char *argv[])
14 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
16 NSBundle *mainBundle = [NSBundle mainBundle];
17 NSString *resourcePath = [mainBundle resourcePath];
18 //NSArray *pythonPathArray = [NSArray arrayWithObjects: resourcePath, [resourcePath stringByAppendingPathComponent:@"PyObjC"], nil];
19 NSArray *pythonPathArray = [NSArray arrayWithObjects: resourcePath, [resourcePath stringByAppendingPathComponent:@"PyObjC"], @"/System/Library/Frameworks/Python.framework/Versions/Current/Extras/lib/python/", nil];
21 setenv("PYTHONPATH", [[pythonPathArray componentsJoinedByString:@":"] UTF8String], 1);
23 NSArray *possibleMainExtensions = [NSArray arrayWithObjects: @"py", @"pyc", @"pyo", nil];
24 NSString *mainFilePath = nil;
26 for (NSString *possibleMainExtension in possibleMainExtensions) {
27 mainFilePath = [mainBundle pathForResource: @"main" ofType: possibleMainExtension];
28 if ( mainFilePath != nil ) break;
31 if ( !mainFilePath ) {
32 [NSException raise: NSInternalInconsistencyException format: @"%s:%d main() Failed to find the Main.{py,pyc,pyo} file in the application wrapper's Resources directory.", __FILE__, __LINE__];
35 Py_SetProgramName("/usr/bin/python");
37 PySys_SetArgv(argc, (char **)argv);
39 const char *mainFilePathPtr = [mainFilePath UTF8String];
40 FILE *mainFile = fopen(mainFilePathPtr, "r");
41 int result = PyRun_SimpleFile(mainFile, (char *)[[mainFilePath lastPathComponent] UTF8String]);
44 [NSException raise: NSInternalInconsistencyException
45 format: @"%s:%d main() PyRun_SimpleFile failed with file '%@'. See console for errors.", __FILE__, __LINE__, mainFilePath];