On Thu, Oct 4, 2012 at 12:14 AM, Matthew Brett <matthew.br...@gmail.com>wrote:
> Hi, > > On Wed, Oct 3, 2012 at 10:51 PM, Ralf Gommers <ralf.gomm...@gmail.com> > wrote: > > > > > > On Wed, Oct 3, 2012 at 11:29 PM, Matthew Brett <matthew.br...@gmail.com> > > wrote: > >> > >> Hi, > >> > >> On Wed, Oct 3, 2012 at 10:17 PM, Ralf Gommers <ralf.gomm...@gmail.com> > >> wrote: > >> > > >> > > >> > On Mon, Oct 1, 2012 at 10:47 PM, Matthew Brett < > matthew.br...@gmail.com> > >> > wrote: > >> >> > >> >> Hi, > >> >> > >> >> On Mon, Oct 1, 2012 at 9:42 PM, Matthew Brett < > matthew.br...@gmail.com> > >> >> wrote: > >> >> > Hi, > >> >> > > >> >> > One of our kind users pointed out an error when using easy_install > to > >> >> > install our package nipy. I've reproduced it now on a bare > package > >> >> > using numpy distutils and having a trivial extension: > >> >> > > >> >> > https://github.com/matthew-brett/apkg > >> >> > > >> >> > To reproduce: > >> >> > > >> >> > git clone git://github.com/mathew-brett/apkg.git > >> >> > > >> >> > easy_install apkg > >> >> > > >> >> > You should get something like this: > >> >> > > >> >> > Processing apkg > >> >> > Running setup.py -q bdist_egg --dist-dir > >> >> > /home/mb312/tmp/apkg/egg-dist-tmp-T5yjuB > >> >> > Appending apkg configuration to > >> >> > Ignoring attempt to set 'name' (from '' to 'apkg') > >> >> > zip_safe flag not set; analyzing archive contents... > >> >> > Adding apkg 0.1 to easy-install.pth file > >> >> > > >> >> > Installed > >> >> > > >> >> > > /home/mb312/.virtualenvs/np-1.6.2/lib/python2.6/site-packages/apkg-0.1-py2.6-linux-i686.egg > >> >> > Processing dependencies for apkg==0.1 > >> >> > Finished processing dependencies for apkg==0.1 > >> >> > > >> >> > > >> >> > > /home/mb312/.virtualenvs/np-1.6.2/lib/python2.6/site-packages/numpy/distutils/misc_util.py:252: > >> >> > RuntimeWarning: Parent module 'numpy.distutils' not found while > >> >> > handling absolute import > >> >> > from numpy.distutils import log > >> >> > > >> >> > Note the last error. > >> >> > >> >> Sorry, correcting myself - it's (obviously) a Warning rather than an > >> >> error, but still distracting, and it would be good to avoid it if > >> >> possible... > >> > > >> > > >> > The combination of two or all of atexit.register, easy_install and > >> > virtualenv seems to be causing this. Unless someone feels like digging > >> > into > >> > that (I certainly don't), there are two easy solutions: > >> > 1. Silence the warning. > >> > >> Sorry - I am not sure what you mean. The problem here is the user who > >> assumes that something bad happened when running easy_install - which > >> is what happened in the case of nipy. Is there some way of silencing > >> this (specific) warning from within setup.py? > >> > >> > 2. Remove the offending import and the logging. This will only remove > >> > the > >> > line "removing: _configtest.c _configtest.o" from the build log (x20). > >> > >> Which import did you mean? I think I need all the imports I'm using > >> in the example minimal package. I'm not explicitly importing logging > >> for example. > > > > > > The import that's indicated in the warning, on line 252 of > > numpy/distutils/misc_util.py. Relevant code: > > > > _temporary_directory = None > > def clean_up_temporary_directory(): > > from numpy.distutils import log # CAUSES RUNTIME WARNING > > global _temporary_directory > > if not _temporary_directory: > > return > > log.debug('removing %s', _temporary_directory) > > try: > > shutil.rmtree(_temporary_directory) > > except OSError: > > pass > > _temporary_directory = None > > > > def make_temp_file(suffix='', prefix='', text=True): > > global _temporary_directory > > if not _temporary_directory: > > _temporary_directory = tempfile.mkdtemp() > > atexit.register(clean_up_temporary_directory) > > Sorry - I still don't understand. You mean I should (in my package - > say nipy or 'apkg') monkey-patch numpy distutils.misc_util ? > No, I was proposing to fix this in numpy.distutils.misc_util directly. Sorry for not being clear. > > Another option would be to move the import outside the callback function > thus: > Should work too I guess, but since I don't understand why the import is where it is now I'm not 100% sure. Removing the import on line 252 and the log.debug call would be the safest fix. Ralf > diff --git a/numpy/distutils/misc_util.py b/numpy/distutils/misc_util.py > index 2e4ed27..e00d924 100644 > --- a/numpy/distutils/misc_util.py > +++ b/numpy/distutils/misc_util.py > @@ -18,6 +18,7 @@ except NameError: > from sets import Set as set > > from numpy.distutils.compat import get_exception > +from numpy.distutils.log import debug as log_debug > > __all__ = ['Configuration', 'get_numpy_include_dirs', > 'default_config_dict', > 'dict_append', 'appendpath', 'generate_config_py', > @@ -249,11 +250,10 @@ def gpaths(paths, local_path='', > include_non_existing=True): > > _temporary_directory = None > def clean_up_temporary_directory(): > - from numpy.distutils import log > global _temporary_directory > if not _temporary_directory: > return > - log.debug('removing %s', _temporary_directory) > + log_debug('removing %s', _temporary_directory) > try: > shutil.rmtree(_temporary_directory) > except OSError: > > > Do you happen to know if that will break anything? Setup install runs for > me... > > Cheers, > > Matthew > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion