At 12:13 PM 7/27/2009 -0700, mhearne808 wrote:
In Java, it is possible to create a .jar file with a main() method
embedded somewhere in one of the .class files. It is then possible to
run the main() method from the command line something like this:
java -jar foo.jar
I believe this will work with only one main() defined - if there are
multiple ones, then you have to specify the path (internal to the jar
file).
I gather from previous googling that there isn't a python command line
option equivalent to -jar for eggs (although that might be kind of
handy)
As of Python 2.6, you can run "python someziporeggfile" and have it
work - you just have to include a __main__.py module.
but that you can add an egg to your path without installing it by
doing something like the following (in a bash shell):
export PYTHONPATH=foo.egg
This will then allow you to run a python script at the command line
without having to actually install the egg to the normal "site-
packages" directory.
My questions:
- Is it possible to embed a script with a "main" entry point in an
egg, and run that from the command line?
As of Python 2.4, you can use 'python -m modulename' to load the
named module as the main module.
- If so, how do you pass command line arguments to that main?
python -m modulename args...
- Is this a massive abuse of the intended usage of setuptools?
Nope. There is also a way to make an egg an executable in its own
right; you can declare an entry point 'eggsecutable' in the
'setuptools.installation' entry point group, and when you bdist_egg
it, the egg will include a simple #!/bin/sh script header to put the
egg on sys.path and run the entry point function. The main downside
to this is that the egg cannot be renamed or run via a symlink with
another name; you have to run it as foobar-1.2.3.egg.
_______________________________________________
Distutils-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/distutils-sig