Hi,

On 6/21/12 5:38 PM, Donald Stufft wrote:
On Thursday, June 21, 2012 at 4:01 PM, Paul Moore wrote:
End users should not need packaging tools on their machines.

Sort of riffing on this idea, I cannot seem to find a specification for
what a Python
package actually is.


FWIW according to distutils[1], a package is: a module or modules inside another module[2]. So e.g.::


  foo.py is a module


and:

  foo/__init__.py
  foo/foo.py

is a simple package containing the following modules:

  import foo, foo.foo


Alex


[1] http://docs.python.org/distutils/introduction.html#general-python-terminology

[2] And a distribution is a compressed archive of a package, in case that's not clear.



 Maybe the first effort should focus on this instead
of arguing one
implementation or another.

As a packager:
     I should not (in general) care what tool (pip, pysetup,
easy_install, buildout, whatever) is used
     to install my package, My package should just describe what to do
to install itself.

As a end user:
    I should not (in general) care what tool was used to create a
package (setuptools, bento, distutils,
    whatever). My tool of choice should look at the package and preform
the operations that the package
    says are needed for install.

Ideally the package could have some basic primitives that are enough to
tell the package installer
tool what to do to install it, These primitives should be enough to
cover the common cases (pure python
modules at the very least, maybe additionally some C modules). Now as
others have remarked it would
be insane to attempt to do this in every case as it would involve
writing a build system that is more
advanced than anything else existing, so a required primitive would be
something that allows calling out
to a specific package decided build system (waf, make, whatever) to
handle the build configuration.

The eventual end goal here being to make a package from something that
varies from implementation
to implementation to a standardized format that any number of tools can
build on top of. It would likely
include some things defining where metadata MUST be defined.

For instance, if metadata in setuptools was "compiled" down to static
file, and easy_install, pip et;al
used that static file to install from instead of executing setup.py,
then the end user would not have
required setup tools installed and instead any number of tools could
have been created that utilized
that data.




--
Alex Clark · http://pythonpackages.com



_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to