A
Alia Khouri
Can we open up the discussion here about how to improve setuptools
which has become the de facto standard for distributing / installing
python software. I've been playing around with ruby's gems which seems
to be more more mature and usable.
From my perspective, the relative immaturity of setuptools and its
simultaneous widespread use is a clear python weakness and can make
python less easy to absorb than it should be.
A few questions (please add more) so far are:
(1) Should setuptools be standard?
(2) What bugs you most about the current featureset?
(3) Which features do you need the most (list in order of need)?
(4) Shouldn't we just port gems to python?
(5) What's the best community process to improve setuptools?
(6) What's your ideal conception of the 'standard python package
manager?
To give this discussion some ammunition, I will post the output of the
different '--help' for either tool:
==================================================
SETUPTOOLS
==================================================
C:\TMP>easy_install --help
Global options:
--verbose (-v) run verbosely (default)
--quiet (-q) run quietly (turns verbosity off)
--dry-run (-n) don't actually do anything
--help (-h) show detailed help message
Options for 'easy_install' command:
--prefix installation prefix
--zip-ok (-z) install package as a zipfile
--multi-version (-m) make apps have to require() a version
--upgrade (-U) force upgrade (searches PyPI for
latest
versions)
--install-dir (-d) install package to DIR
--script-dir (-s) install scripts to DIR
--exclude-scripts (-x) Don't install scripts
--always-copy (-a) Copy all needed packages to install
dir
--index-url (-i) base URL of Python Package Index
--find-links (-f) additional URL(s) to search for
packages
--delete-conflicting (-D) no longer needed; don't use this
--ignore-conflicts-at-my-risk no longer needed; don't use this
--build-directory (-b) download/extract/build in DIR; keep
the
results
--optimize (-O) also compile with optimization: -O1
for
"python -O", -O2 for "python -OO",
and -O0 to
disable [default: -O0]
--record filename in which to record list of
installed
files
--always-unzip (-Z) don't install as a zipfile, no matter
what
--site-dirs (-S) list of directories where .pth files
work
--editable (-e) Install specified packages in
editable form
--no-deps (-N) don't install dependencies
--allow-hosts (-H) pattern(s) that hostnames must match
--local-snapshots-ok (-l) allow building eggs from local
checkouts
usage: easy_install-script.py [options] requirement_or_url ...
or: easy_install-script.py --help
==================================================
GEMS
==================================================
C:\TMP>gem --help
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.
Usage:
gem -h/--help
gem -v/--version
gem command [arguments...] [options...]
Examples:
gem install rake
gem list --local
gem build package.gemspec
gem help install
Further help:
gem help commands list all 'gem' commands
gem help examples show some examples of usage
gem help platforms show information about platforms
gem help <COMMAND> show help on COMMAND
(e.g. 'gem help install')
Further information:
http://rubygems.rubyforge.org
C:\TMP>gem help commands
GEM commands are:
build Build a gem from a gemspec
cert Manage RubyGems certificates and signing
settings
check Check installed gems
cleanup Clean up old versions of installed gems in the
local
repository
contents Display the contents of the installed gems
dependency Show the dependencies of an installed gem
environment Display information about the RubyGems
environment
fetch Download a gem and place it in the current
directory
generate_index Generates the index files for a gem server
directory
help Provide help on the 'gem' command
install Install a gem into the local repository
list Display gems whose name starts with STRING
lock Generate a lockdown list of gems
mirror Mirror a gem repository
outdated Display all gems that need updates
pristine Restores installed gems to pristine condition
from files
located in the gem cache
query Query gem information in local or remote
repositories
rdoc Generates RDoc for pre-installed gems
search Display all gems whose name contains STRING
server Documentation and gem repository HTTP server
sources Manage the sources and cache file RubyGems uses
to search
for gems
specification Display gem specification (in yaml)
uninstall Uninstall gems from the local repository
unpack Unpack an installed gem to the current directory
update Update the named gems (or all installed gems) in
the local
repository
which Find the location of a library
For help on a particular command, use 'gem help COMMAND'.
Commands may be abbreviated, so long as they are unambiguous.
e.g. 'gem i rake' is short for 'gem install rake'.
=======================================================
Hope this discussion can be constructive. In any case, I do appreciate
the effort that went into creating setuptools (Thanks Phillip J.
Eby . It's existence is clearly better than otherwise.
Best,
AK
which has become the de facto standard for distributing / installing
python software. I've been playing around with ruby's gems which seems
to be more more mature and usable.
From my perspective, the relative immaturity of setuptools and its
simultaneous widespread use is a clear python weakness and can make
python less easy to absorb than it should be.
A few questions (please add more) so far are:
(1) Should setuptools be standard?
(2) What bugs you most about the current featureset?
(3) Which features do you need the most (list in order of need)?
(4) Shouldn't we just port gems to python?
(5) What's the best community process to improve setuptools?
(6) What's your ideal conception of the 'standard python package
manager?
To give this discussion some ammunition, I will post the output of the
different '--help' for either tool:
==================================================
SETUPTOOLS
==================================================
C:\TMP>easy_install --help
Global options:
--verbose (-v) run verbosely (default)
--quiet (-q) run quietly (turns verbosity off)
--dry-run (-n) don't actually do anything
--help (-h) show detailed help message
Options for 'easy_install' command:
--prefix installation prefix
--zip-ok (-z) install package as a zipfile
--multi-version (-m) make apps have to require() a version
--upgrade (-U) force upgrade (searches PyPI for
latest
versions)
--install-dir (-d) install package to DIR
--script-dir (-s) install scripts to DIR
--exclude-scripts (-x) Don't install scripts
--always-copy (-a) Copy all needed packages to install
dir
--index-url (-i) base URL of Python Package Index
--find-links (-f) additional URL(s) to search for
packages
--delete-conflicting (-D) no longer needed; don't use this
--ignore-conflicts-at-my-risk no longer needed; don't use this
--build-directory (-b) download/extract/build in DIR; keep
the
results
--optimize (-O) also compile with optimization: -O1
for
"python -O", -O2 for "python -OO",
and -O0 to
disable [default: -O0]
--record filename in which to record list of
installed
files
--always-unzip (-Z) don't install as a zipfile, no matter
what
--site-dirs (-S) list of directories where .pth files
work
--editable (-e) Install specified packages in
editable form
--no-deps (-N) don't install dependencies
--allow-hosts (-H) pattern(s) that hostnames must match
--local-snapshots-ok (-l) allow building eggs from local
checkouts
usage: easy_install-script.py [options] requirement_or_url ...
or: easy_install-script.py --help
==================================================
GEMS
==================================================
C:\TMP>gem --help
RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.
Usage:
gem -h/--help
gem -v/--version
gem command [arguments...] [options...]
Examples:
gem install rake
gem list --local
gem build package.gemspec
gem help install
Further help:
gem help commands list all 'gem' commands
gem help examples show some examples of usage
gem help platforms show information about platforms
gem help <COMMAND> show help on COMMAND
(e.g. 'gem help install')
Further information:
http://rubygems.rubyforge.org
C:\TMP>gem help commands
GEM commands are:
build Build a gem from a gemspec
cert Manage RubyGems certificates and signing
settings
check Check installed gems
cleanup Clean up old versions of installed gems in the
local
repository
contents Display the contents of the installed gems
dependency Show the dependencies of an installed gem
environment Display information about the RubyGems
environment
fetch Download a gem and place it in the current
directory
generate_index Generates the index files for a gem server
directory
help Provide help on the 'gem' command
install Install a gem into the local repository
list Display gems whose name starts with STRING
lock Generate a lockdown list of gems
mirror Mirror a gem repository
outdated Display all gems that need updates
pristine Restores installed gems to pristine condition
from files
located in the gem cache
query Query gem information in local or remote
repositories
rdoc Generates RDoc for pre-installed gems
search Display all gems whose name contains STRING
server Documentation and gem repository HTTP server
sources Manage the sources and cache file RubyGems uses
to search
for gems
specification Display gem specification (in yaml)
uninstall Uninstall gems from the local repository
unpack Unpack an installed gem to the current directory
update Update the named gems (or all installed gems) in
the local
repository
which Find the location of a library
For help on a particular command, use 'gem help COMMAND'.
Commands may be abbreviated, so long as they are unambiguous.
e.g. 'gem i rake' is short for 'gem install rake'.
=======================================================
Hope this discussion can be constructive. In any case, I do appreciate
the effort that went into creating setuptools (Thanks Phillip J.
Eby . It's existence is clearly better than otherwise.
Best,
AK