Matplotlib hat viele optionale Abhängigkeiten, die optionale Funktionen bieten. Die aktivierten Funktionen werden zum Zeitpunkt der Installation angezeigt, aber wie wird sie nach der Installation wieder angezeigt?Wie kann ich die aktivierten Funktionen einer Matplotlib-Installation kennen?
Antwort
Die optionale Abhängigkeitsausgabe, die bei der Installation von matplotlib angezeigt wird, wird von einer Reihe von Umgebungstestern generiert, die in setupext.py definiert sind. Es gibt eine Liste von ihnen ist in der Reihenfolge werden sie angezeigt, in setup.py:
mpl_packages = [
'Building Matplotlib',
setupext.Matplotlib(),
setupext.Python(),
setupext.Platform(),
'Required dependencies and extensions',
setupext.Numpy(),
setupext.Dateutil(),
setupext.FuncTools32(),
setupext.Pytz(),
setupext.Cycler(),
setupext.Tornado(),
setupext.Pyparsing(),
setupext.LibAgg(),
setupext.FreeType(),
setupext.FT2Font(),
setupext.Png(),
setupext.Qhull(),
setupext.Image(),
setupext.TTConv(),
setupext.Path(),
setupext.ContourLegacy(),
setupext.Contour(),
setupext.Delaunay(),
setupext.QhullWrap(),
setupext.Tri(),
setupext.Externals(),
'Optional subpackages',
setupext.SampleData(),
setupext.Toolkits(),
setupext.Tests(),
setupext.Toolkits_Tests(),
'Optional backend extensions',
# These backends are listed in order of preference, the first
# being the most preferred. The first one that looks like it will
# work will be selected as the default backend.
setupext.BackendMacOSX(),
setupext.BackendQt5(),
setupext.BackendQt4(),
setupext.BackendGtk3Agg(),
setupext.BackendGtk3Cairo(),
setupext.BackendGtkAgg(),
setupext.BackendTkAgg(),
setupext.BackendWxAgg(),
setupext.BackendGtk(),
setupext.BackendAgg(),
setupext.BackendCairo(),
setupext.Windowing(),
'Optional LaTeX dependencies',
setupext.DviPng(),
setupext.Ghostscript(),
setupext.LaTeX(),
setupext.PdfToPs(),
'Optional package data',
setupext.Dlls(),
]
Die eigentliche Prüfung weiter unten ist in der gleichen Datei:
for package in mpl_packages:
if isinstance(package, str):
print_raw('')
print_raw(package.upper())
else:
try:
result = package.check()
if result is not None:
message = 'yes [%s]' % result
print_status(package.name, message)
except setupext.CheckFailed as e:
msg = str(e).strip()
if len(msg):
print_status(package.name, 'no [%s]' % msg)
else:
print_status(package.name, 'no')
if not package.optional:
required_failed.append(package)
else:
good_packages.append(package)
if isinstance(package, setupext.OptionalBackendPackage):
if default_backend is None:
default_backend = package.name
Leider, weil, wie Python Installationsarbeiten Keine dieser Dateien ist verfügbar, nachdem Sie matplotlib installiert haben. Wenn Sie jedoch eine Kopie der Quelle matplotlib (oder Repo) haben, können Sie die Überprüfungen ausführen, ohne eine vollständige Neuinstallation von Matplotlib wie folgt auszuführen.
Fügen Sie zunächst den matplotlib-Quellordner zu Ihrem sys.path hinzu und ändern Sie dann das Verzeichnis in den Ordner (dieser zweite Schritt ist erforderlich, damit versioneer.py
funktioniert).
import os, sys
PATH = r'\your\path\to\matplotlib'
sys.path.append(PATH)
import setupext # setupext.py contains the dependency definitions
os.chdir(PATH)
Als nächstes definieren Sie die Liste der Pakete/Abhängigkeiten, die Sie testen möchten.
mpl_packages = [
'Building Matplotlib',
setupext.Matplotlib(),
setupext.Python(),
setupext.Platform(),
'Required dependencies and extensions',
setupext.Numpy(),
setupext.Dateutil(),
setupext.FuncTools32(),
setupext.Pytz(),
setupext.Cycler(),
setupext.Tornado(),
setupext.Pyparsing(),
setupext.LibAgg(),
setupext.FreeType(),
setupext.FT2Font(),
setupext.Png(),
setupext.Qhull(),
setupext.Image(),
setupext.TTConv(),
setupext.Path(),
setupext.ContourLegacy(),
setupext.Contour(),
setupext.Delaunay(),
setupext.QhullWrap(),
setupext.Tri(),
setupext.Externals(),
'Optional subpackages',
setupext.SampleData(),
setupext.Toolkits(),
setupext.Tests(),
setupext.Toolkits_Tests(),
'Optional backend extensions',
# These backends are listed in order of preference, the first
# being the most preferred. The first one that looks like it will
# work will be selected as the default backend.
setupext.BackendMacOSX(),
setupext.BackendQt5(),
setupext.BackendQt4(),
setupext.BackendGtk3Agg(),
setupext.BackendGtk3Cairo(),
setupext.BackendGtkAgg(),
setupext.BackendTkAgg(),
setupext.BackendWxAgg(),
setupext.BackendGtk(),
setupext.BackendAgg(),
setupext.BackendCairo(),
setupext.Windowing(),
'Optional LaTeX dependencies',
setupext.DviPng(),
setupext.Ghostscript(),
setupext.LaTeX(),
setupext.PdfToPs(),
'Optional package data',
setupext.Dlls(),
]
Schließlich iterieren Sie über die optionalen Pakete und testen Sie sie. Diese Testschleife gibt die Ergebnisse für jede Abhängigkeitsprüfung aus, ohne sich darum kümmern zu müssen, sie/etc.
for package in mpl_packages:
if isinstance(package, str):
print('')
print(package.upper())
else:
try:
result = package.check()
if result is not None:
message = 'yes [%s]' % result
print(package.name, message)
except setupext.CheckFailed as e:
msg = str(e).strip()
if len(msg):
print(package.name, 'no [%s]' % msg)
else:
print(package.name, 'no')
Auf meinem aktuellen System gibt mir die folgende Ausgabe:
BUILDING MATPLOTLIB
matplotlib yes [1.5.0+319.g781605a]
python yes [3.5.1 |Anaconda 4.0.0 (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)]]
platform yes [win32]
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy yes [version 1.10.4]
dateutil yes [using dateutil version 2.5.2]
functools32 yes [Not required]
pytz yes [using pytz version 2016.3]
cycler yes [using cycler version 0.10.0]
tornado yes [using tornado version 4.3]
pyparsing yes [using pyparsing version 2.0.3]
libagg yes [pkg-config information for 'libagg' could not be found. Using local copy.]
freetype no [The C/C++ header for freetype (ft2build.h) could not be found. You may need to install the development package.]
png no [The C/C++ header for png (png.h) could not be found. You may need to install the development package.]
qhull yes [pkg-config information for 'qhull' could not be found. Using local copy.]
OPTIONAL SUBPACKAGES
sample_data yes [installing]
toolkits yes [installing]
tests yes [using nose version 1.3.7/using unittest.mock]
toolkits_tests yes [using nose version 1.3.7/using unittest.mock]
OPTIONAL BACKEND EXTENSIONS
macosx no [Mac OS-X only]
qt5agg no [PyQt5 not found]
qt4agg yes [installing, Qt: 4.8.7, PyQt: 4.8.7; PySide not found]
gtk3agg no [Requires pygobject to be installed.]
gtk3cairo no [Requires cairocffi or pycairo 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 [cairocffi or pycairo not found]
windowing yes [installing, installing]
OPTIONAL LATEX DEPENDENCIES
dvipng yes [version 1.12]
ghostscript no
latex yes [version MiKTeX 2.9]
pdftops no
OPTIONAL PACKAGE DATA
dlls no [skipping due to configuration]
- 1. Wie kann ich die nächste Zufallszahl kennen?
- 2. Kann ich die Revisionsnummer eines Commits kennen?
- 3. Wie kann ich die IP-Adressen unter einem Router kennen
- 4. Wie kann ich die Größe der Benutzerkontrolle kennen?
- 5. Wie kann ich die Python-Funktionen binden?
- 6. Wie kann ich den Servicenamen kennen?
- 7. Wie kann ich die Online-Benutzer meiner Website kennen?
- 8. Wie kann ich die Tastatursprache kennen? (en/fr)
- 9. Wie kann ich die Version von pip selbst kennen?
- 10. Wie kann ich die Speichernutzung in C++ kennen?
- 11. Wie kann ich die installierte Version von pylab kennen?
- 12. Wie kann ich die Zeitzone meiner Website kennen Host
- 13. Wie kann Observable.fromCallable() mit einer aktivierten Ausnahme verwendet werden?
- 14. Wie kann ich die möglichen Parameter kennen, die von einer anderen Android-Anwendung gelesen werden können?
- 15. Wie System kann Geschäftsjahr kennen?
- 16. Wie aktualisiere ich die Datenbank von einem aktivierten Optionsfeld?
- 17. kann ich die Thread runnable Klassenattribute in Java kennen?
- 18. Ich möchte den Unterschied zwischen Low-Level-Funktionen und Top-Level-Funktionen kennen
- 19. Wie kann ich die xdebug Version, die ich installiert habe, kennen?
- 20. Wie kann ich den Projekttyp eines VS C# -Projekts kennen?
- 21. Wie kann ich ein Array initialisieren, ohne es zu kennen?
- 22. Wie kann ich den Mount-Pfad von Router Express kennen?
- 23. Wie bekomme ich die Zeile mit einem aktivierten Kontrollkästchen aus einer JQuery DataTable?
- 24. Wie kann ich die Bandbreite des Benutzers kennen, um die bestmögliche Version meiner Webanwendung bereitzustellen?
- 25. Wie überschreibe ich die Funktionen einer Elternklasse in Python?
- 26. Wie kann ich den Spaltennamen aus einer Tabelle basierend auf den Spaltenwerten kennen?
- 27. Wie kann ich mein System kennen? Gradle buildToolsVersion
- 28. Wie kann ich alle abgeleiteten Klassen eines Elternteils kennen?
- 29. Wie kann ich alle Plugin-Namen in CKEditor kennen?
- 30. Wie kann ich die Farbe eines TPanels mit aktivierten VCL Styles ändern?