I am trying to build a stub exe on Windows that embeds Python and launches my Tkinter app. I want a full-blown exe program starter because the various Python freezing tools (py2exe, pyinstaller) do not work to my satisfaction with Python 3.5.

I am able to get the executable built but I cannot get it to load Tkinter and run. The current error is:

"AttributeError: module 'sys' has no attribute 'argv'"

when called from the Tkinter init method.

Here is my command-line invocation for the compiler:

---
gcc quickwho.c -I \C:\Users\kevin\AppData\Local\Programs\Python\Python35\include -LC:\Users\kevin\AppData\Local\Programs\Python\Python35\libs -LC:\Users\kevin\AppData\Local\Programs\Python\Python35\DLLs -lShlwapi -lpython35 -o quickwho.exe
----

And here is my C stub launcher:

#include <C:/Users/kevin/AppData/Local/Programs/Python/Python35/include/Python.h>
#include <Windows.h>
#include <shlobj.h>
#include <shlwapi.h>
#include <tchar.h>

int main(int argc, char *argv[])
{

    Py_SetProgramName(argv[0]);
    Py_Initialize();

     TCHAR exedir [MAX_PATH];


  #if 0
  GetModuleFileName(NULL, exedir, MAX_PATH);
  _tprintf("%s/n", exedir);
  PathRemoveFileSpec(exedir);
  _tprintf("%s/n", exedir);
  #endif

/*Get the module's full path, and set to the current working directory.*/
  if (!GetModuleFileName(NULL, exedir, MAX_PATH)) {

    TCHAR errmsg[512];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),0,errmsg,1024,NULL);

_tprintf( TEXT("The path is %s, and the error is %s/n"), exedir, errmsg );
  }


  if (!PathRemoveFileSpec(exedir)) {

    TCHAR errmsg[512];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),0,errmsg,1024,NULL); _tprintf( TEXT("The target dir is %s, and the error is %s/n"), exedir, errmsg );
  }

  if (!SetCurrentDirectory(exedir)) {

    TCHAR errmsg[512];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,0, GetLastError(),0,errmsg,1024,NULL); _tprintf( TEXT("The working dir is %s, and the error is %s/n"), exedir,errmsg );
  }


    PyRun_SimpleString("exec(open(\"QuickWho.py\").read())");
    Py_Finalize();

    return 0;
}

Can anyone suggest what I might do to get Tkinter to load and run my exe?

Thanks,
Kevin

--
Kevin Walzer
Code by Kevin/Mobile Code by Kevin
http://www.codebykevin.com
http://www.wtmobilesoftware.com
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to