[Distutils] [issue68] install local package with extras with easy_install
P.J. Eby
pje at telecommunity.com
Thu Apr 23 07:10:43 CEST 2009
At 03:03 AM 4/23/2009 +0000, Chad wrote:
>I feel that the above is a bug. '.' should be treated as a path not a package
>name, since '.' is not a valid package name.
Actually, it is.
> i haven't looked at the code yet,
>but it seems that a regular expression should be able to determine between a
>valid package name, an http address, and a path on disk. it seems
>like '.' was
>added as a special case, because other relative paths don't seem to
>be supported:
>
>$ cd /path/to/mypackage
>$ easy_install ../mypackage[extraFeature]
>error: Not a URL, existing file, or requirement spec:
>'../mypackage[extraFeature] '
As it says in the error message, arguments are checked for a URL,
existing file, or a requirement spec -- and in that order. URL-ness
is checked by regex. Filename-ness is checked by checking for the
existence of the file or directory, not by parsing. If the file
doesn't exist, an attempt is made to parse it as a requirement
spec. '.[foo]' is neither a URL nor an existing file, but it *is* a
valid requirement spec, for a package named '.'.
I don't know of any way to change any of this without changing the
command-line API. The recommended workaround for building a local
package with extras is:
easy_install . packagename[extras]
as this will first install the local package, then install the
specified extras.
More information about the Distutils-SIG
mailing list