Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does installing matplotlib for Python v3.4 fail on Windows 7 (x64)?

I excitedly installed Python v3.4 this afternoon as it now comes with PIP pre-packaged in it but typing pip install matplotlib yielded a rather disappointing response:

C:\Users\jonc>pip install matplotlib
Downloading/unpacking matplotlib
  Running setup.py (path:C:\Users\jonc\AppData\Local\Temp\pip_build_Jonc\matplotlib\setup.py) egg_info for package matpl
otlib
    ============================================================================
    Edit setup.cfg to change the build options

    BUILDING MATPLOTLIB
                matplotlib: yes [1.3.1]
                    python: yes [3.4.0 (v3.4.0:04f714765c13, Mar 16 2014,
                            19:25:23) [MSC v.1600 64 bit (AMD64)]]
                  platform: yes [win32]

    REQUIRED DEPENDENCIES AND EXTENSIONS
                     numpy: yes [not found. pip may install it below.]
                  dateutil: yes [dateutil was not found. It is required for date
                            axis support. pip/easy_install may attempt to
                            install it after matplotlib.]
                   tornado: yes [tornado was not found. It is required for the
                            WebAgg backend. pip/easy_install may attempt to
                            install it after matplotlib.]
                 pyparsing: yes [pyparsing was not found. It is required for
                            mathtext support. pip/easy_install may attempt to
                            install it after matplotlib.]
                     pycxx: yes [Official versions of PyCXX are not compatible
                            with Python 3.x.  Using local copy]
                    libagg: yes [pkg-config information for 'libagg' could not
                            be found. Using local copy.]
                  freetype: yes [Unknown version]
                       png: yes [pkg-config information for 'libpng' could not
                            be found. Using unknown version.]

    OPTIONAL SUBPACKAGES
               sample_data: yes [installing]
                  toolkits: yes [installing]
                     tests: yes [nose 0.11.1 or later is required to run the
                            matplotlib test suite]

    OPTIONAL BACKEND EXTENSIONS
                    macosx: no  [Mac OS-X only]
                    qt4agg: no  [PyQt4 not found]
                   gtk3agg: no  [gtk3agg backend does not work on Python 3]
                 gtk3cairo: no  [Requires cairo to be installed.]
                    gtkagg: no  [Requires pygtk]
                     tkagg: no  [The C/C++ header for Tk (tk.h) could not be
                            found.  You may need to install the development
                            package.]
                     wxagg: no  [requires wxPython]
                       gtk: no  [Requires pygtk]
                       agg: yes [installing]
                     cairo: no  [cairo not found]
                 windowing: yes [installing, installing]

    OPTIONAL LATEX DEPENDENCIES
                    dvipng: no
               ghostscript: no
                     latex: no
                   pdftops: no

    non-existing path in 'numpy\\distutils': 'site.cfg'
    non-existing path in 'numpy\\lib': 'benchmarks'
    Running from numpy source directory.
    C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1521: UserWarning:

        Atlas (http://math-atlas.sourceforge.net/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [atlas]) or by setting
        the ATLAS environment variable.
      warnings.warn(AtlasNotFoundError.__doc__)
    C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1530: UserWarning:

        Blas (http://www.netlib.org/blas/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [blas]) or by setting
        the BLAS environment variable.
      warnings.warn(BlasNotFoundError.__doc__)
    C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1533: UserWarning:

        Blas (http://www.netlib.org/blas/) sources not found.
        Directories to search for the sources can be specified in the
        numpy/distutils/site.cfg file (section [blas_src]) or by setting
        the BLAS_SRC environment variable.
      warnings.warn(BlasSrcNotFoundError.__doc__)
    C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1427: UserWarning:

        Atlas (http://math-atlas.sourceforge.net/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [atlas]) or by setting
        the ATLAS environment variable.
      warnings.warn(AtlasNotFoundError.__doc__)
    C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1438: UserWarning:

        Lapack (http://www.netlib.org/lapack/) libraries not found.
        Directories to search for the libraries can be specified in the
        numpy/distutils/site.cfg file (section [lapack]) or by setting
        the LAPACK environment variable.
      warnings.warn(LapackNotFoundError.__doc__)
    C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1441: UserWarning:

        Lapack (http://www.netlib.org/lapack/) sources not found.
        Directories to search for the sources can be specified in the
        numpy/distutils/site.cfg file (section [lapack_src]) or by setting
        the LAPACK_SRC environment variable.
      warnings.warn(LapackSrcNotFoundError.__doc__)
    C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution option: 'define_macros'
      warnings.warn(msg)
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "C:\Users\jonc\AppData\Local\Temp\pip_build_Jonc\matplotlib\setup.py", line 268, in <module>
        **extra_args
      File "C:\Python34\lib\distutils\core.py", line 109, in setup
        _setup_distribution = dist = klass(attrs)
      File "C:\Python34\lib\site-packages\setuptools\dist.py", line 239, in __init__
        self.fetch_build_eggs(attrs.pop('setup_requires'))
      File "C:\Python34\lib\site-packages\setuptools\dist.py", line 263, in fetch_build_eggs
        parse_requirements(requires), installer=self.fetch_build_egg
      File "C:\Python34\lib\site-packages\pkg_resources.py", line 564, in resolve
        dist = best[req.key] = env.best_match(req, self, installer)
      File "C:\Python34\lib\site-packages\pkg_resources.py", line 802, in best_match
        return self.obtain(req, installer) # try and download/install
      File "C:\Python34\lib\site-packages\pkg_resources.py", line 814, in obtain
        return installer(requirement)
      File "C:\Python34\lib\site-packages\setuptools\dist.py", line 313, in fetch_build_egg
        return cmd.easy_install(req)
      File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 593, in easy_install
        return self.install_item(spec, dist.location, tmpdir, deps)
      File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 623, in install_item
        dists = self.install_eggs(spec, download, tmpdir)
      File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 809, in install_eggs
        return self.build_and_install(setup_script, setup_base)
      File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 1015, in build_and_install
        self.run_setup(setup_script, setup_base, args)
      File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 1000, in run_setup
        run_setup(setup_script, args)
      File "C:\Python34\lib\site-packages\setuptools\sandbox.py", line 50, in run_setup
        lambda: execfile(
      File "C:\Python34\lib\site-packages\setuptools\sandbox.py", line 100, in run
        return func()
      File "C:\Python34\lib\site-packages\setuptools\sandbox.py", line 52, in <lambda>
        {'__file__':setup_script, '__name__':'__main__'}
      File "C:\Python34\lib\site-packages\setuptools\compat.py", line 78, in execfile
        exec(compile(source, fn, 'exec'), globs, locs)
      File "setup.py", line 239, in <module>
        author_email="[email protected]",
      File "setup.py", line 231, in setup_package
        setup_requires = []
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\core.py", line 169, in se
tup
      File "C:\Python34\lib\distutils\core.py", line 149, in setup
        dist.run_commands()
      File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
        cmd_obj.run()
      File "C:\Python34\lib\site-packages\setuptools\command\bdist_egg.py", line 177, in run
        self.run_command("egg_info")
      File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
        cmd_obj.run()
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\egg_info.py", lin
e 10, in run
      File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
        cmd_obj.run()
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", li
ne 153, in run
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", li
ne 164, in build_sources
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", li
ne 299, in build_library_sources
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", li
ne 386, in generate_sources
      File "numpy\core\setup.py", line 680, in get_mathlib_info
      File "C:\Python34\lib\distutils\command\config.py", line 243, in try_link
        self._check_compiler()
      File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\config.py", line
57, in _check_compiler
      File "C:\Python34\lib\distutils\msvc9compiler.py", line 371, in initialize
        vc_env = query_vcvarsall(VERSION, plat_spec)
      File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall
        raise ValueError(str(list(result.keys())))
    ValueError: ['path']
    Complete output from command python setup.py egg_info:
    ============================================================================

Edit setup.cfg to change the build options



BUILDING MATPLOTLIB

            matplotlib: yes [1.3.1]

                python: yes [3.4.0 (v3.4.0:04f714765c13, Mar 16 2014,

                        19:25:23) [MSC v.1600 64 bit (AMD64)]]

              platform: yes [win32]



REQUIRED DEPENDENCIES AND EXTENSIONS

                 numpy: yes [not found. pip may install it below.]

              dateutil: yes [dateutil was not found. It is required for date

                        axis support. pip/easy_install may attempt to

                        install it after matplotlib.]

               tornado: yes [tornado was not found. It is required for the

                        WebAgg backend. pip/easy_install may attempt to

                        install it after matplotlib.]

             pyparsing: yes [pyparsing was not found. It is required for

                        mathtext support. pip/easy_install may attempt to

                        install it after matplotlib.]

                 pycxx: yes [Official versions of PyCXX are not compatible

                        with Python 3.x.  Using local copy]

                libagg: yes [pkg-config information for 'libagg' could not

                        be found. Using local copy.]

              freetype: yes [Unknown version]

                   png: yes [pkg-config information for 'libpng' could not

                        be found. Using unknown version.]



OPTIONAL SUBPACKAGES

           sample_data: yes [installing]

              toolkits: yes [installing]

                 tests: yes [nose 0.11.1 or later is required to run the

                        matplotlib test suite]



OPTIONAL BACKEND EXTENSIONS

                macosx: no  [Mac OS-X only]

                qt4agg: no  [PyQt4 not found]

               gtk3agg: no  [gtk3agg backend does not work on Python 3]

             gtk3cairo: no  [Requires cairo to be installed.]

                gtkagg: no  [Requires pygtk]

                 tkagg: no  [The C/C++ header for Tk (tk.h) could not be

                        found.  You may need to install the development

                        package.]

                 wxagg: no  [requires wxPython]

                   gtk: no  [Requires pygtk]

                   agg: yes [installing]

                 cairo: no  [cairo not found]

             windowing: yes [installing, installing]



OPTIONAL LATEX DEPENDENCIES

                dvipng: no

           ghostscript: no

                 latex: no

               pdftops: no



non-existing path in 'numpy\\distutils': 'site.cfg'

non-existing path in 'numpy\\lib': 'benchmarks'

Running from numpy source directory.

C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1521: UserWarning:

    Atlas (http://math-atlas.sourceforge.net/) libraries not found.

    Directories to search for the libraries can be specified in the

    numpy/distutils/site.cfg file (section [atlas]) or by setting

    the ATLAS environment variable.

  warnings.warn(AtlasNotFoundError.__doc__)

C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1530: UserWarning:

    Blas (http://www.netlib.org/blas/) libraries not found.

    Directories to search for the libraries can be specified in the

    numpy/distutils/site.cfg file (section [blas]) or by setting

    the BLAS environment variable.

  warnings.warn(BlasNotFoundError.__doc__)

C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1533: UserWarning:

    Blas (http://www.netlib.org/blas/) sources not found.

    Directories to search for the sources can be specified in the

    numpy/distutils/site.cfg file (section [blas_src]) or by setting

    the BLAS_SRC environment variable.

  warnings.warn(BlasSrcNotFoundError.__doc__)

C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1427: UserWarning:

    Atlas (http://math-atlas.sourceforge.net/) libraries not found.

    Directories to search for the libraries can be specified in the

    numpy/distutils/site.cfg file (section [atlas]) or by setting

    the ATLAS environment variable.

  warnings.warn(AtlasNotFoundError.__doc__)

C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1438: UserWarning:

    Lapack (http://www.netlib.org/lapack/) libraries not found.

    Directories to search for the libraries can be specified in the

    numpy/distutils/site.cfg file (section [lapack]) or by setting

    the LAPACK environment variable.

  warnings.warn(LapackNotFoundError.__doc__)

C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\system_info.py:1441: UserWarning:

    Lapack (http://www.netlib.org/lapack/) sources not found.

    Directories to search for the sources can be specified in the

    numpy/distutils/site.cfg file (section [lapack_src]) or by setting

    the LAPACK_SRC environment variable.

  warnings.warn(LapackSrcNotFoundError.__doc__)

C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution option: 'define_macros'

  warnings.warn(msg)

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "C:\Users\jonc\AppData\Local\Temp\pip_build_Jonc\matplotlib\setup.py", line 268, in <module>

    **extra_args

  File "C:\Python34\lib\distutils\core.py", line 109, in setup

    _setup_distribution = dist = klass(attrs)

  File "C:\Python34\lib\site-packages\setuptools\dist.py", line 239, in __init__

    self.fetch_build_eggs(attrs.pop('setup_requires'))

  File "C:\Python34\lib\site-packages\setuptools\dist.py", line 263, in fetch_build_eggs

    parse_requirements(requires), installer=self.fetch_build_egg

  File "C:\Python34\lib\site-packages\pkg_resources.py", line 564, in resolve

    dist = best[req.key] = env.best_match(req, self, installer)

  File "C:\Python34\lib\site-packages\pkg_resources.py", line 802, in best_match

    return self.obtain(req, installer) # try and download/install

  File "C:\Python34\lib\site-packages\pkg_resources.py", line 814, in obtain

    return installer(requirement)

  File "C:\Python34\lib\site-packages\setuptools\dist.py", line 313, in fetch_build_egg

    return cmd.easy_install(req)

  File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 593, in easy_install

    return self.install_item(spec, dist.location, tmpdir, deps)

  File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 623, in install_item

    dists = self.install_eggs(spec, download, tmpdir)

  File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 809, in install_eggs

    return self.build_and_install(setup_script, setup_base)

  File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 1015, in build_and_install

    self.run_setup(setup_script, setup_base, args)

  File "C:\Python34\lib\site-packages\setuptools\command\easy_install.py", line 1000, in run_setup

    run_setup(setup_script, args)

  File "C:\Python34\lib\site-packages\setuptools\sandbox.py", line 50, in run_setup

    lambda: execfile(

  File "C:\Python34\lib\site-packages\setuptools\sandbox.py", line 100, in run

    return func()

  File "C:\Python34\lib\site-packages\setuptools\sandbox.py", line 52, in <lambda>

    {'__file__':setup_script, '__name__':'__main__'}

  File "C:\Python34\lib\site-packages\setuptools\compat.py", line 78, in execfile

    exec(compile(source, fn, 'exec'), globs, locs)

  File "setup.py", line 239, in <module>

    author_email="[email protected]",

  File "setup.py", line 231, in setup_package

    setup_requires = []

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\core.py", line 169, in setup

  File "C:\Python34\lib\distutils\core.py", line 149, in setup

    dist.run_commands()

  File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands

    self.run_command(cmd)

  File "C:\Python34\lib\distutils\dist.py", line 974, in run_command

    cmd_obj.run()

  File "C:\Python34\lib\site-packages\setuptools\command\bdist_egg.py", line 177, in run

    self.run_command("egg_info")

  File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command

    self.distribution.run_command(command)

  File "C:\Python34\lib\distutils\dist.py", line 974, in run_command

    cmd_obj.run()

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\egg_info.py", line 10
, in run

  File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command

    self.distribution.run_command(command)

  File "C:\Python34\lib\distutils\dist.py", line 974, in run_command

    cmd_obj.run()

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", line 1
53, in run

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", line 1
64, in build_sources

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", line 2
99, in build_library_sources

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\build_src.py", line 3
86, in generate_sources

  File "numpy\core\setup.py", line 680, in get_mathlib_info

  File "C:\Python34\lib\distutils\command\config.py", line 243, in try_link

    self._check_compiler()

  File "C:\Users\jonc\AppData\Local\Temp\easy_install-jzy7ozif\numpy-1.8.1\numpy\distutils\command\config.py", line 57,
in _check_compiler

  File "C:\Python34\lib\distutils\msvc9compiler.py", line 371, in initialize

    vc_env = query_vcvarsall(VERSION, plat_spec)

  File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall

    raise ValueError(str(list(result.keys())))

ValueError: ['path']

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in C:\Users\jonc\AppData\Local\Temp\pip_build_Jonc\matplotlib
Storing debug log for failure in C:\Users\jonc\pip\pip.log

There's some mention in the matplotlib docs on installing under windows that indicates numpy might need to be installed first but that also appears to fail:

C:\Users\jonc>pip install numpy

...skip a bit...

----------------------------------------
Cleaning up...
Command C:\Python34\python.exe -c "import setuptools, tokenize;__file__='C:\\Users\\jonc\\AppData\\Local\\Temp\\pip_buil
d_Jonc\\numpy\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__,
'exec'))" install --record C:\Users\jonc\AppData\Local\Temp\pip-mjhk9pan-record\install-record.txt --single-version-exte
rnally-managed --compile failed with error code 1 in C:\Users\jonc\AppData\Local\Temp\pip_build_Jonc\numpy
Storing debug log for failure in C:\Users\jonc\pip\pip.log

What am I missing here? My Python's pretty rusty but I was under the impression pip installed dependencies itself?

I was hoping we were over the nightmare that used to be trying to install Python under Windows but it would seem not...

like image 379
Jon Cage Avatar asked Mar 26 '14 13:03

Jon Cage


People also ask

What version of Python does Matplotlib work with?

Python and NumPy Matplotlib supports: All minor versions of Python released 42 months prior to the project, and at minimum the two latest minor versions. All minor versions of numpy released in the 24 months prior to the project, and at minimum the last three minor versions.

Does Python 3.9 support Matplotlib?

BUILDING MATPLOTLIB matplotlib: yes [3.3. 2] python: yes [3.9.

Does Python 3.7 support Matplotlib?

Matplotlib is a python library that allows you to represent your data visually.


1 Answers

You need to have a working C compiler (preferably gcc) installed in order to install matplotlib from sources (i.e. using pip). You don't appear to have that on your Windows box. It's probably better for you to wait for matplotlib Windows binaries to be released for python 3.4, which is what you are using. Or you can downgrade to python 3.3 and download the prebuilt Windows binaries of matplotlib for that version from http://matplotlib.org/downloads.html.

I was in the same situation after upgrading to python 3.4. I do have Visual Studio 2010 installed but getting Python's pip build process to use that properly is a big pain in the ass. I was able to find unofficial prebuilt binaries of numpy and matplotlib for Python 3.4 at http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib. Those are build with Visual Studio, so it is possible to pull it off, but I don't have the patience to figure out the gunky details. By the way, you also need install python‑dateutil, pyparsing and the module/library called six from the same repository for some basic matplotlib examples to work. [Hat tip to: ImportError: matplotlib requires dateutil ]. You can probably email the maintainer of this latter collection of binaries for tips how to do it... and perhaps let us know what's involved. (You appear to have Visual Studio 2008 installed [MSVC 9], or at least your Python 3.4 installation seems to think you have it and is trying to use that.)

like image 93
Fizz Avatar answered Oct 11 '22 23:10

Fizz