From: David G. <d.l...@gm...> - 2013-08-02 21:19:48
|
Hi! I: am running Python 2.7.3 and py2exe 0.6.9 in 64-bit Windows 7; did "due diligence" before posting this; and know that Python's built-in help "is intended for interactive use." Nevertheless, using the code: if len(sys.argv)-1: if sys.argv[1].lower()=='help': help('myapp') return I have my application successfully using Python's builtin help such that if I type at a DOS prompt: python myapp.py "help" it replies the same as if I typed help('myapp') in the Python interpreter. Also, my app builds and runs fine using py2exe...except this help functionality: myapp.exe "help" returns "NameError: name 'help' undefined". I tracked this down to py2exe not importing "site.py" (the automatically imported module that imports a wrapped version of pydoc.help) which I can understand, since its name implies that it probably imports deployment-specific data. Nevertheless, I tried various ways to "work around" this "limitation," all unsuccessful, so I've decided to post here: is there some way to include for py2exe either site.py or, preferably (since site.py appears to import many, many other things I don't need) pydoc, or even just pydoc.help, such that myapp.exe "help" will work the same as python myapp.py "help"? Thanks! OlyDLG |
From: David G. <d.l...@gm...> - 2013-08-02 23:15:15
|
I wasn't able to figure this out (I found I was able to successfully import help from pydoc and call help, but it couldn't find the docstring, even when I included the source file in the executable's directory, so if you know how, I'd still like to know) but putting a copy of the source in dist did give me the idea for the following successful-but-inelegant workaround: I added os.system('copy myapp.py dist\*') to the end of my setup.py, then in my app I check sys.argv[0] for substring 'exe' and if present, I open the source in a file object and then just spit it out line by line 'til it reaches the end of the docstring. As I said, not very elegant, but it serves my purpose. Thanks for reading. DG On Fri, Aug 2, 2013 at 2:19 PM, David Goldsmith <d.l...@gm...>wrote: > Hi! I: am running Python 2.7.3 and py2exe 0.6.9 in 64-bit Windows 7; did > "due diligence" before posting this; and know that Python's built-in help > "is intended for interactive use." Nevertheless, using the code: > > if len(sys.argv)-1: > if sys.argv[1].lower()=='help': > help('myapp') > return > > I have my application successfully using Python's builtin help such that > if I type at a DOS prompt: > > python myapp.py "help" > > it replies the same as if I typed help('myapp') in the Python > interpreter. Also, my app builds and runs fine using py2exe...except this > help functionality: > > myapp.exe "help" > > returns "NameError: name 'help' undefined". I tracked this down to py2exe > not importing "site.py" (the automatically imported module that imports a > wrapped version of pydoc.help) which I can understand, since its name > implies that it probably imports deployment-specific data. Nevertheless, I > tried various ways to "work around" this "limitation," all unsuccessful, so > I've decided to post here: is there some way to include for py2exe either > site.py or, preferably (since site.py appears to import many, many other > things I don't need) pydoc, or even just pydoc.help, such that myapp.exe > "help" will work the same as python myapp.py "help"? Thanks! > > OlyDLG > -- >From "A Letter From The Future" in "Peak Everything" by Richard Heinberg: "By the time I was an older teenager, a certain...attitude was developing among the young people...a feeling of utter contempt for anyone over a certain age--maybe 30 or 40. The adults had consumed so many resources, and now there were none left for their own children...when those adults were younger, they [were] just doing what everybody else was doing...they figured it was normal to cut down ancient forests for...phone books, pump every last gallon of oil to power their SUV's...[but] for...my generation all that was just a dim memory...We [grew up] living in darkness, with shortages of food and water, with riots in the streets, with people begging on street corners...for us, the adults were the enemy." Want to *really* understand what's *really* going on? Read "Peak Everything." |
From: Thomas H. <th...@ct...> - 2013-08-03 11:19:52
|
Am 03.08.2013 01:15, schrieb David Goldsmith: > I wasn't able to figure this out (I found I was able to successfully > import help from pydoc and call help, but it couldn't find the > docstring, even when I included the source file in the executable's > directory, If you build the exe with '-OO' then Python will throw away the doc strings. Is that the problem? Thomas |
From: David G. <d.l...@gm...> - 2013-08-04 08:20:27
|
On Sat, Aug 3, 2013 at 4:19 AM, Thomas Heller <th...@ct...> wrote: > Am 03.08.2013 01:15, schrieb David Goldsmith: > > I wasn't able to figure this out (I found I was able to successfully > > import help from pydoc and call help, but it couldn't find the > > docstring, even when I included the source file in the executable's > > directory, > > If you build the exe with '-OO' then Python will throw away the doc > strings. Is that the problem? > > Thomas > Only if that's the default: my setup.py is as simple as they come: from distutils.core import setup import py2exe setup(console=["myApp.py", "mySubApp.py"]) DG |