为什么在Windows 7(x64)上安装用于Python v3.4的matplotlib失败?

Jon*_*age 5 python numpy matplotlib

我今天下午兴奋地安装了Python v3.4,因为它现在预装了PIP,但打字却pip install matplotlib产生了相当令人失望的反应:

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="mdroe@stsci.edu",
      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="mdroe@stsci.edu",

  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
Run Code Online (Sandbox Code Playgroud)

matplotlib文档中有一些提到在Windows下安装,表明可能需要首先安装numpy,但似乎也失败了:

C:\Users\jonc>pip install numpy
Run Code Online (Sandbox Code Playgroud)

......跳过一点......

----------------------------------------
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
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我的Python非常生疏,但我的印象是pip安装依赖本身?

我希望我们过去曾经试图在Windows下安装Python的噩梦,但似乎不是......

Fiz*_*izz 4

您需要安装一个可用的 C 编译器(最好是 gcc)才能从源代码(即使用 pip)安装 matplotlib。你的 Windows 盒子上似乎没有这个。对于您来说,等待您正在使用的 python 3.4 版本的 matplotlib Windows 二进制文件发布可能会更好。或者您可以降级到 python 3.3 并从http://matplotlib.org/downloads.html下载该版本的预构建的 matplotlib Windows 二进制文件

\n\n

升级到 python 3.4 后我遇到了同样的情况。我确实安装了 Visual Studio 2010,但是正确使用 Python 的 pip 构建过程是一件很痛苦的事情。我可以在http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib找到 Python 3.4 的 numpy 和 matplotlib 的非官方预构建二进制文件。这些是用 Visual Studio 构建的,因此可以完成它,但我没有耐心去弄清楚那些棘手的细节。顺便说一下,您还需要安装 python\xe2\x80\x91dateutil、pyparsing\n 以及来自同一存储库的名为 6 的模块/库,以便一些基本的 matplotlib 示例能够工作。[提示:ImportError:matplotlib 需要 dateutil ]。您可以向后一个二进制文件集合的维护者发送电子邮件,以获取如何执行此操作的提示...也许还可以让我们知道所涉及的内容。(您似乎安装了 Visual Studio 2008 [MSVC 9],或者至少您的 Python 3.4 安装似乎认为您已经安装了它并且正在尝试使用它。)

\n