Skip to content

f2py throws error on VM #12136

@briantoby

Description

@briantoby

f2py fails on VM that is not configured for multiple CPUs

File "...\numpy\distutils\misc_util.py" (line 99, function get_num_build_jobs) assumes that multiprocessing multiprocessing.cpu_count will always return a number. At least on the VM I use to do windows builds, I get an exception, as below.

Solution is a patch to put the call in a try/except block and recover:

    try:
        cpu_count = len(os.sched_getaffinity(0))
    except AttributeError:
       cpu_count = multiprocessing.cpu_count()

to

    try:
        cpu_count = len(os.sched_getaffinity(0))
    except AttributeError:
        try:
            cpu_count = multiprocessing.cpu_count()
        except NotImplementedError:
            cpu_count = 1

Error message:

Traceback (most recent call last):
  File "C:\Users\toby\miniconda2-64\Scripts\f2py.py", line 28, in <module>
    main()
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\f2py\f2py2e.py", line 648, in main
    run_compile()
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\f2py\f2py2e.py", line 633, in run_compile
    setup(ext_modules=[ext])
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\distutils\core.py", line 169, in setup
    return old_setup(**new_attr)
  File "C:\Users\toby\miniconda2-64\lib\distutils\core.py", line 151, in setup
    dist.run_commands()
  File "C:\Users\toby\miniconda2-64\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Users\toby\miniconda2-64\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\distutils\command\build.py", line 47, in run
    old_build.run(self)
  File "C:\Users\toby\miniconda2-64\lib\distutils\command\build.py", line 127, in run
    self.run_command(cmd_name)
  File "C:\Users\toby\miniconda2-64\lib\distutils\cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "C:\Users\toby\miniconda2-64\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\distutils\command\build_ext.py", line 262, in run
    self.build_extensions()
  File "C:\Users\toby\miniconda2-64\lib\distutils\command\build_ext.py", line 449, in build_extensions
    self.build_extension(ext)
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\distutils\command\build_ext.py", line 380, in build_extension
    **kws)
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\distutils\ccompiler.py", line 246, in CCompiler_compile
    jobs = get_num_build_jobs()
  File "C:\Users\toby\miniconda2-64\lib\site-packages\numpy\distutils\misc_util.py", line 99, in get_num_build_jobs
    cpu_count = multiprocessing.cpu_count()
  File "C:\Users\toby\miniconda2-64\lib\multiprocessing\__init__.py", line 136, in cpu_count
    raise NotImplementedError('cannot determine number of cpus')
NotImplementedError: cannot determine number of cpus

Numpy/Python version information:

'2.7.15 |Anaconda, Inc.| (default, May 1 2018, 18:37:09) [MSC v.1500 64 bit (AMD64)]'
numpy-1.15.2 (via anaconda)

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions