[Distutils] Unable to import python script after installing using easy_install

Marius Gedminas marius at pov.lt
Sat Jan 10 15:26:19 CET 2009


On Fri, Jan 09, 2009 at 03:03:08PM -0600, ray terrill wrote:
> I'm using python2.4 to try to package and deliver a custom python script.
> I'm unable to import the package.
> 
> My setup.py looks like the following:
> from setuptools import setup, find_packages
> setup(
>    name = "randomscript",
>    version = "1.0",
>    packages = find_packages(),
> )

And where's the rest of the sources?

> I'm building the package using the following:
> python setup.py bdist_egg

Some people say bdist_egg is not a good idea, and suggest using sdists
only, unless you're building a package for Windows (or MacOS), and that
package contains C extension modules that end-users will have trouble
compiling.

I am one of those people.

> I'm installing the package using the following:
> easy_install randomscript-1.0-py2.4.egg
> Processing randomscript-1.0-py2.4.egg
> Copying randomscript-1.0-py2.4.egg to /usr/lib/python2.4/site-packages
> Adding randomscript 1.0 to easy-install.pth file
> 
> Installed /usr/lib/python2.4/site-packages/randomscript-1.0-py2.4.egg
> Processing dependencies for randomscript==1.0
> Finished processing dependencies for randomscript==1.0
> 
> If I attempt to use the script, I get an import error, but I do see the
> script listed in my sys.path:
> ImportError: No module named randomscript

I suspect the .egg is empty (i.e. contains no Python sources and modules).
You probably need to specify a path for find_packages().

> Also, if I cd to /usr/lib/python2.4/site-packages/, I see that my egg is
> there, but is not a directory (should it be)?
> -rw-r--r--   1 root root  819 2009-01-09 20:06 randomscript-1.0-py2.4.egg

It's a zip file, which is often inconvenient (and also slow, as a
bonus).  You can ask easy_install to unzip it while installing.

> Any help would be appreciated.

I'm generally very opposed to cargo cult programming, but when dealing
with distutils/setuptools, the only way I manage to get something done
is to start from a working example, then copy, paste and modify.

Here's a simple example of a package that has only one source file in
the same directory as setup.py:

  http://mg.pov.lt/eazysvn/svn/trunk/

The setup.py doesn't use find_packages, but specifies the name of the
module in py_modules, and also defines a few entry points to get
executable scripts in /usr/bin.

Here's a more complicated example of a package, that has a Python
package (the naming clash is unfortunate) under src/, with some resource
files (*.png, etc.):

  http://mg.pov.lt/gtimelog/svn/

setup.py specifies the sources via packages, package_dir, and
package_data.

Marius Gedminas
-- 
For vi emulation of emacs, just type ":sh emacs" (without the quotes).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20090110/941d003d/attachment.pgp>


More information about the Distutils-SIG mailing list