[Distutils] ImportError running 'test' on namespace package - other package in namespace not found

Jason R. Coombs jaraco at jaraco.com
Mon Jun 30 02:06:14 CEST 2008


Okay.  I narrowed the problem down and created a minimal test case.  I created 
two projects, myns.projA and myns.projB.  myns.projA is stock basic_namespace 
project with one module added.

First, I created myns.projA with the basic_namespace template from ZopeSkel:

> paster create -t basic_namespace
Selected and implied templates:
  zopeskel#basic_namespace  A project with a namespace package

Enter project name: myns.projA
Variables:
  egg:      myns.projA
  package:  mynsproja
  project:  myns.projA
Enter namespace_package (Namespace package (like plone)) ['plone']: myns
Enter package (The package contained namespace package (like example)) 
['example']: projA
... (rest are defaults)

Then I added a single module with a simple function

> cat > myns.projA\myns\projA\modA.py
def funcA():
  print "funcA called"
^D

myns.projB is another project created basically the same way, but they key to 
getting the bug to surface was to put the packages in a sub-directory... so I 
modified setup.py with the following parameters to setup:
      packages=find_packages('src'),
      package_dir={'': 'src'},
	test_suite='nose.collector',

And of course, I moved the myns directory to src/myns.  Note, this only had to 
happen for myns.projB.

Finally, I created a test directory and a file testBasic.py

> cat > test/testBasic.py
from myns.projA.modA import funcA
^D

Note, I could add a dependency from myns.projB on myns.projA, but it's not 
necessary for this demonstration.

Then, I either setup myns.projA with either "install" or "develop" so that 
it's visible to the Python installation.

Thereafter, if I try to run "setup.py test" on myns.projB, I get the 
ImportError.  See error.txt, attached, for the transcript.  I've also attached 
the two test packages as described.  I notice now that the error appears to 
only occur when nose.collector is used... and when the package_dir of the 
child package is overridden.  Perhaps this needs to go to the nose project and 
instead of the distutils project.

Please advise on what I might do next to help resolve this issue.  Obviously I 
could restructure my projects to avoid the problem, but I would much rather 
help resolve the problem, as I suspect it may affect other users' deployments 
as well.

Much obliged,
Jason

-----Original Message-----
From: Phillip J. Eby [mailto:pje at telecommunity.com]
Sent: Friday, 20 June, 2008 08:46
To: Jason R. Coombs; distutils-sig at python.org
Subject: Re: [Distutils] ImportError running 'test' on namespace package - 
other package in namespace not found

At 08:07 PM 6/18/2008 -0600, Jason R. Coombs wrote:
>If there's not something obvious I should be doing differently, I'm happy to
>put together a minimal test case that reproduces the problem.

Please do.  Thanks!

-------------- next part --------------
A non-text attachment was scrubbed...
Name: myns.zip
Type: application/x-zip-compressed
Size: 15371 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20080629/58e79b8c/attachment-0002.bin>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: error.txt
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20080629/58e79b8c/attachment-0001.txt>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 6580 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20080629/58e79b8c/attachment-0003.bin>


More information about the Distutils-SIG mailing list