Skip to content

AttributeError: 'dict' object has no attribute '__NUMPY_SETUP__' #151

Closed
@ghost

Description

Since #145 was merged (which I was happy to note, it was pretty annoying having to pre-install Python dependencies!), I get this error when attempting to run unit tests on a package which depends on cf-units.

It looks to be a relatively common issue with the __builtins__ object sometimes being a module, and sometimes being a dict, and any code accessing it must handle both of these cases.

Other examples:
pycalphad/pycalphad#26
erikrose/nose-progressive#54

I've included this very contrived example to demonstrate the problem:

$ mkdir /tmp/mypackage && cd /tmp/mypackage

$ virtualenv venv && source venv/bin/activate
New python executable in /tmp/mypackage/venv/bin/python
Installing setuptools, pip, wheel...done.

$ cat setup.py
from setuptools import setup
setup(
    name='mypackage',
    version='0.1',
    tests_require='cf-units'
)

$ python setup.py test
running test
Searching for cf-units
Reading https://pypi.org/simple/cf-units/
Downloading https://files.pythonhosted.org/packages/43/45/c23e9412fbccf511de996bb6450ca8862e1273839617dd17240d9c179324/cf-units-2.1.1.tar.gz#sha256=fa0ef8efd84546e61088aa23e76ebbaf7043167dc3a7f35f34549c234b543530
Best match: cf-units 2.1.1
Processing cf-units-2.1.1.tar.gz
Writing /tmp/easy_install-Smrlyk/cf-units-2.1.1/setup.cfg
Running cf-units-2.1.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-Smrlyk/cf-units-2.1.1/egg-dist-tmp-mywrU6
Traceback (most recent call last):
  File "setup.py", line 6, in <module>
    tests_require='cf-units'
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/__init__.py", line 145, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/test.py", line 217, in run
    installed_dists = self.install_dists(self.distribution)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/test.py", line 209, in install_dists
    tr_d = dist.fetch_build_eggs(dist.tests_require or [])
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/dist.py", line 717, in fetch_build_eggs
    replace_conflicting=True,
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 782, in resolve
    replace_conflicting=replace_conflicting
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1065, in best_match
    return self.obtain(req, installer)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1077, in obtain
    return installer(requirement)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/dist.py", line 784, in fetch_build_egg
    return cmd.easy_install(req)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 679, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 705, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 890, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1158, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 1144, in run_setup
    run_setup(setup_script, args)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 253, in run_setup
    raise
  File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 166, in save_modules
    saved_exc.resume()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 141, in resume
    six.reraise(type, exc, self._tb)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 154, in save_modules
    yield saved
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 195, in setup_context
    yield
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 250, in run_setup
    _execfile(setup_script, ns)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/sandbox.py", line 45, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-Smrlyk/cf-units-2.1.1/setup.py", line 144, in <module>
    
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/__init__.py", line 145, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/bdist_egg.py", line 163, in run
    self.run_command("egg_info")
  File "/usr/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/egg_info.py", line 296, in run
    self.find_sources()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/egg_info.py", line 303, in find_sources
    mm.run()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/egg_info.py", line 534, in run
    self.add_defaults()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/egg_info.py", line 570, in add_defaults
    sdist.add_defaults(self)
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/py36compat.py", line 36, in add_defaults
    self._add_defaults_ext()
  File "/tmp/mypackage/venv/local/lib/python2.7/site-packages/setuptools/command/py36compat.py", line 119, in _add_defaults_ext
    build_ext = self.get_finalized_command('build_ext')
  File "/usr/lib/python2.7/distutils/cmd.py", line 312, in get_finalized_command
    cmd_obj.ensure_finalized()
  File "/usr/lib/python2.7/distutils/cmd.py", line 109, in ensure_finalized
    self.finalize_options()
  File "/tmp/easy_install-Smrlyk/cf-units-2.1.1/setup.py", line 102, in finalize_options
    
AttributeError: 'dict' object has no attribute '__NUMPY_SETUP__'

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions