At 11:25 AM 8/5/2010 -0700, Sridhar Ratnakumar wrote:
From setup.py:
[...]
name='hello'
[...]
entry_points = {
'console_scripts': [
'hello=hello:main',
'internal=hello.internal:main [secret]',
[...]
If I run "easy_install hello" both bin/hello and bin/internal are
installed. I expected bin/internal to be installed *only* when
"easy_install hello[secret]" is run.
Is this anomaly a bug, or by design?
I don't really consider it a bug; more of the absence of a
feature. ;-) I will consider adding it to 0.7. (Though it will
more likely be that I will simply issue a warning if the extra(s)
aren't specified and the requirements aren't already met; in part it
depends on whether I refactor to add a more transactional installation system.)
I have a real-world use case for this, which is to install 'backend'
scripts only when the 'backend' extras is requested. This is to
prevent users from installing backend/server related commands when
they only need the client commands. When creating sdist, I
explicitly exclude src/hello/internal (internal packages), but there
is no way to prevent the script creation other than hacking setup.py.
As a way to implement this in the short run, you could place the
backend scripts in a separate distribution, and list that in the
extras. The other distribution could consist of nothing more than
the list of entry points, and a requirement that points back to the
original distribution.
_______________________________________________
Distutils-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/distutils-sig