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

Reply via email to