[Numpy-discussion] AttributeError in numpy.distutils

Pearu Peterson pearu.peterson at gmail.com
Mon May 30 03:54:21 EDT 2011


On Sun, May 29, 2011 at 9:19 PM, Ralf Gommers
<ralf.gommers at googlemail.com>wrote:

>
>
> On Sun, May 22, 2011 at 8:14 PM, Branimir Sesar <bsesar at astro.caltech.edu>wrote:
>
>> On 05/22/2011 04:17 AM, Ralf Gommers wrote:
>> >
>> >
>> > On Thu, May 19, 2011 at 8:28 PM, Branimir Sesar
>> > <bsesar at astro.caltech.edu <mailto:bsesar at astro.caltech.edu>> wrote:
>> >
>> >     Dear Numpy users,
>> >
>> >     I've encountered an AttributeError in numpy.distutils
>> >
>> >        File
>> >
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/build_src.py",
>> >     line 646, in swig_sources
>> >          extension.swig_opts.remove('-c++')
>> >     AttributeError: 'str' object has no attribute 'remove'
>> >
>> >     while compiling some code with Python 2.7.1 and Numpy 1.6.0.
>> >
>> >
>> > What are you doing here, compiling numpy? Building some of your own
>> > swig-ed code? Please give the details needed to reproduce your issue.
>>
>> I've been trying to compile Scikits ANN
>> (http://projects.scipy.org/scikits/wiki/AnnWrapper) with Python 2.7.1,
>> numpy 1.6.0, and SWIG 2.0.3 but the compilation breaks down down with
>> the error given below. Previously, I was able to compile Scikits ANN
>> using Enthought Python Distribution 7.0.2 (Python 2.7.1, numpy 1.5.1,
>> swig 1.3.40).
>>
>> running install
>> running bdist_egg
>> running egg_info
>> running build_src
>> build_src
>> building extension "scikits.ann._ANN" sources
>> Traceback (most recent call last):
>>    File "setup.py", line 139, in <module>
>>      test_suite = 'nose.collector',
>>    File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/core.py",
>>
>> line 186, in setup
>>      return old_setup(**new_attr)
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/core.py", line
>> 152, in setup
>>      dist.run_commands()
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/dist.py", line
>> 953, in run_commands
>>      self.run_command(cmd)
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/dist.py", line
>> 972, in run_command
>>      cmd_obj.run()
>>    File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/install.py",
>>
>> line 57, in run
>>      r = self.setuptools_run()
>>    File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/install.py",
>>
>> line 51, in setuptools_run
>>      self.do_egg_install()
>>    File "build/bdist.linux-x86_64/egg/setuptools/command/install.py",
>> line 96, in do_egg_install
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/cmd.py", line
>> 326, in run_command
>>      self.distribution.run_command(command)
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/dist.py", line
>> 972, in run_command
>>      cmd_obj.run()
>>    File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py",
>> line 167, in run
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/cmd.py", line
>> 326, in run_command
>>      self.distribution.run_command(command)
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/dist.py", line
>> 972, in run_command
>>      cmd_obj.run()
>>    File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/egg_info.py",
>>
>> line 8, in run
>>      self.run_command("build_src")
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/cmd.py", line
>> 326, in run_command
>>      self.distribution.run_command(command)
>>    File "/home/bsesar/usr/pydebug/lib/python2.7/distutils/dist.py", line
>> 972, in run_command
>>      cmd_obj.run()
>>     File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/build_src.py",
>>
>> line 152, in run
>>      self.build_sources()
>>     File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/build_src.py",
>>
>> line 169, in build_sources
>>      self.build_extension_sources(ext)
>>     File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/build_src.py",
>>
>> line 332, in build_extension_sources
>>      sources = self.swig_sources(sources, ext)
>>     File
>>
>> "/home/bsesar/usr/pydebug/lib/python2.7/site-packages/numpy/distutils/command/build_src.py",
>>
>> line 646, in swig_sources
>>      extension.swig_opts.remove('-c++')
>> AttributeError: 'str' object has no attribute 'remove'
>>
>> Looks like this is a bug introduced in numpy 1.6.0 by commit ff0822c4.
>
>
This is not a bug as explained in

  http://projects.scipy.org/numpy/ticket/1851


> Right above this line (numpy/distutils/command/build_src.py, line 646) add
> this:
>
>         if isinstance(extension.swig_opts, basestring):
>             extension.swig_opts = extension.swig_opts.split()
>
> Then you should be able to compile scikits.ann.
>
>
The bug is in scikits/ann/setup.py. Applying the following patch

--- scikits/ann/setup.py    (revision 2267)
+++ scikits/ann/setup.py    (working copy)
@@ -45,11 +45,11 @@
                         library_dirs = [ann_library_dir],
                         libraries = ['ANN'],
                         language='c++',
-                        swig_opts='-c++',
+                        swig_opts=['-c++'],
                         )
     config.add_subpackage('tests')

     return config

will make the build successful.

HTH,
Pearu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110530/d3529537/attachment.html>


More information about the NumPy-Discussion mailing list