From: Lawrence B. <lbr...@ac...> - 2005-09-15 22:09:06
|
I searched this mailing list, looked through the Py2Exe Wiki, and looked at the comments in __init__.py, and I can't find any info on this. Of course, I tried 'script' : 'filename.py arg1 arg2 ...' but that didn't work. This is a flag that I want to pass it at build-time so it does not need to be specified at exe runtime. I rallly hope there is a way to do this. Thanks for the help! - Lawrence |
From: John M. <sjm...@le...> - 2005-09-15 22:25:13
|
Lawrence Bruhmuller wrote: > I searched this mailing list, looked through the Py2Exe Wiki, and > looked at the comments in __init__.py, and I can't find any info on this. > > Of course, I tried 'script' : 'filename.py arg1 arg2 ...' but that > didn't work. > This is a flag that I want to pass it at build-time so it does not > need to be specified at exe runtime. > I presume your real need is to vary some configuration item each time you generate an exe -- you don't *really* need this to appear as a command-line argument. Try this: Create a file called (say) custom.py containing (say): CONFIG_ITEM = "foo.bar" In your main script put this: from custom import CONFIG_ITEM ... then refer to CONFIG_ITEM. You could create custom.py with a text editor, or by making your setup.py somewhat more elaborate -- e.g. prompting you for the value, and writing the file. HTH, John |
From: Lawrence B. <lbr...@ac...> - 2005-09-15 23:05:48
|
Hi John, Well I could also workaround this in other ways, like set an environment variable that I read inside the application. But plenty of programs have command line flags; seems like it is a major hole in Py2Exe if it doesn't support this. I haven't looked too deeply at the source code, but all that is necessary is something to take some args specified in the setup() call and map them to where the script is actually invoked. - Lawrence John Machin wrote: > Lawrence Bruhmuller wrote: > >> I searched this mailing list, looked through the Py2Exe Wiki, and >> looked at the comments in __init__.py, and I can't find any info on >> this. >> >> Of course, I tried 'script' : 'filename.py arg1 arg2 ...' but that >> didn't work. >> This is a flag that I want to pass it at build-time so it does not >> need to be specified at exe runtime. >> > I presume your real need is to vary some configuration item each time > you generate an exe -- you don't *really* need this to appear as a > command-line argument. > > Try this: > > Create a file called (say) custom.py containing (say): > CONFIG_ITEM = "foo.bar" > > In your main script put this: > from custom import CONFIG_ITEM > ... > then refer to CONFIG_ITEM. > > You could create custom.py with a text editor, or by making your > setup.py somewhat more elaborate -- e.g. prompting you for the value, > and writing the file. > > HTH, > John > > > > |
From: John M. <sjm...@le...> - 2005-09-16 00:01:12
|
Lawrence Bruhmuller wrote: > Hi John, > > Well I could also workaround this in other ways, like set an > environment variable that I read inside the application. You set an environment variable at BUILD time that the application can read at RUN time on another box a long time later? That's heap big magic! > But plenty of programs have command line flags; seems like it is a > major hole in Py2Exe if it doesn't support this. It might so seem to you, but freezing command line arguments might appear to others to be a very strange idea. Again I ask: what is your *real* top-level requirement? > I haven't looked too deeply at the source code, but all that is > necessary is something to take some args specified in the setup() call > and map them to where the script is actually invoked. > Consider looking deeply enough to propose a patch. |
From: Lawrence B. <lbr...@ac...> - 2005-09-16 04:46:49
|
> You set an environment variable at BUILD time that the application can read at RUN time on another box a long time later? That's heap big magic! Good point (that this wouldn't work), but I guess what I am saying in that this could be worked around in many ways. Generate Python code (as you suggest), generate text file as part of the distribution to be read in at runtime, etc. All very doable. But IMO, it would be nice to support optionally injecting args, thus not requiring any change to the application to be frozen. > It might so seem to you, but freezing command line arguments might appear to others to be a very strange idea. Perhaps. py2app has something called argv_inject which seems to do what I am describing. > Again I ask: what is your *real* top-level requirement? This particular command line flag is a debug level. I want to distribute an .exe with a fixed non-default debug level that is not modifiable by the recipient, not to mention not requiring the recipient to supply it when they run the exe. > Consider looking deeply enough to propose a patch. Unlikely, since this non-blocking, but thanks for asking. |
From: Brian D. <bri...@gm...> - 2005-09-16 05:32:32
|
On 15/09/05, Lawrence Bruhmuller <lbr...@ac...> wrote: > This particular command line flag is a debug level. I want to > distribute an .exe with a fixed non-default debug level that is not > modifiable by the recipient, not to mention not requiring the recipient > to supply it when they run the exe. One option would be to set the debug level differently if the app is wrapped up with py2exe. Here is a method for determining if the app is running as an exe or not: http://starship.python.net/crew/theller/moin.cgi/HowToDetermineIfRunningFro= mExe?action=3Dhighlight&value=3Dfrozen Take care, -Brian |
From: Thomas H. <th...@py...> - 2005-09-16 06:36:23
|
Brian Dorsey <bri...@gm...> writes: > On 15/09/05, Lawrence Bruhmuller <lbr...@ac...> wrote: >> This particular command line flag is a debug level. I want to >> distribute an .exe with a fixed non-default debug level that is not >> modifiable by the recipient, not to mention not requiring the recipient >> to supply it when they run the exe. > > One option would be to set the debug level differently if the app is > wrapped up with py2exe. Here is a method for determining if the app is > running as an exe or not: > > http://starship.python.net/crew/theller/moin.cgi/HowToDetermineIfRunningFromExe?action=highlight&value=frozen > Another idea might be to make the executable behave differently depending on the executable filename. And finally, when you start subclassing the py2exe command, you have even more options: 1. You can use custom boot-scripts for your executables. They may even inject something into sys.argv. 2. py2exe can at build time pass variables to the environment in which the boot script and the main script runs. See the build_executable() method in lib\site-packages\py2exe\build_exe.py module. Thomas |