[PYTHON] Quand j'ai essayé d'installer PIL et matplotlib dans un environnement virtualenv, j'en étais accro.

** Session de lecture "Première reconnaissance de formes" ** est sur le point de se terminer, donc le sujet de ce qu'il faut lire dans la prochaine série est "Practical Computer Vision ”est apparu.

Il est juste stocké dans ma maison, alors j'ai pensé le sortir et le lire pendant un moment, mais j'étais accro à la création de l'environnement. Et pour une raison qui n'a pas vraiment d'importance. Pathétique ...

Prenez note pour que personne ne suive la même ornière.

environnement

Avant d'installer PIL

Je peux l'installer par pip install PIL sans penser à rien, mais lorsque je lis le fichier jpeg et que j'essaye de le montrer avec pylab, j'obtiens l'erreur suivante.

IOError: decoder jpeg not available

On m'a dit qu'il n'y avait pas de décodeur jpeg, donc quand je l'ai googlé, il semble que libjpeg-dev doit être installé. Cependant, quand j'ai sudo apt-get install libjpeg-dev, j'étais en colère contre "je l'ai déjà!".

Lorsque j'installe libjpeg-dev avec apt, libjpeg.so est créé sous / usr / lib / x86_64-linux-gnu /, mais il semble que ce dossier ne soit pas vu lors de l'installation de PIL avec pip.

Alors, mettons un lien symbolique où vous pouvez le voir à partir de pip.

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so

Après la liaison, j'ai réinstallé PIL et cela a bien fonctionné.

référence

http://atasatamatara.hatenablog.jp/entry/20120723/1343044059

Avant d'installer matplotlib

matplotlib peut également être entré avec pip. Numpy est également inclus en raison de la dépendance.

Cependant, rien ne s'affiche lorsque pylab.show () est exécuté. Je n'ai même pas d'erreur. Qu'est-ce que c'est? ?? ??

Après enquête, il semble que le backend pour l'affichage de l'écran soit configuré de manière appropriée. Où le définir est un fichier appelé matplotlibrc. La commande suivante vous indiquera l'emplacement.

>>> import matplotlib
>>> matplotlib.matplotlib_fname()

matplotlibrc


backend      : agg

Avec un backend appelé agg, vous pouvez écrire dans un fichier, mais vous ne pouvez pas ouvrir une fenêtre et l'afficher à l'écran.

En fait, matplotlib est également inclus dans python à l'échelle du système, mais quand je regarde ce matplotlibrc, le backend est Tkagg. Il semble que vous utilisez Tkinter.

Je vais donc réécrire d'agg en Tkagg. Ensuite, l'erreur suivante est apparue cette fois.

No module named _tkagg

Il semble qu'un fichier nommé _tkagg.py ne soit pas généré lors de la compilation de matplotlib. Pour résoudre ce problème, vous devez installer tk-dev.

sudo apt-get install tk-dev

Cette fois, ce sera sous / usr / lib, il n'est donc pas nécessaire de mettre un lien. Si vous réinstallez matplotlib après avoir installé tk-dev, tout va bien.

Résumé

Je l'ai écrit dans l'ordre où j'ai essayé diverses choses en tâtonnant, mais il devrait être mis en place comme ça.

sudo apt-get install libjpeg tk-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so

pip install PIL
pip install matplotlib

vim /path/to/your/matplotlibrc
###Réécrire le backend sur Tkapp

À propos, si vous recherchez sur Google, les informations seront publiées telles quelles, mais parce que j'ai décidé que "s'il s'agit d'un matplotlib à l'échelle du système, il s'affichera correctement avec tk, il n'y a donc aucune raison pour que tk-dev ne soit pas inclus" et je ne l'ai pas confirmé. J'en suis accro.

Je ne me souviens pas comment cela s'est passé, mais peut-être que quand je l'ai mis dans tout le système, c'était apt, et depuis que je l'ai mis en binaire, _tkagg a été inclus même sans tk-dev ...

Recommended Posts

Quand j'ai essayé d'installer PIL et matplotlib dans un environnement virtualenv, j'en étais accro.
Ce à quoi j'étais accro lors de la création d'applications Web dans un environnement Windows
Ce à quoi j'étais accro en traitant d'énormes fichiers dans un environnement Linux 32 bits
Quand j'ai essayé de gratter en utilisant des requêtes en python, j'étais accro à SSLError, donc un mémo de contournement
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Notez que j'étais accro à la configuration de TensowFlow
Dans IPython, quand j'ai essayé de voir la valeur, c'était un générateur, donc je l'ai inventé quand j'étais frustré.
Ce à quoi j'étais accro en combinant l'héritage de classe et l'héritage de table commune dans SQLAlchemy
J'ai trébuché lorsque j'ai essayé d'installer Basemap, donc un mémorandum
Quand j'ai essayé de créer un environnement Rails sur WSL2 (Ubuntu 20.04LTS), j'ai trébuché et suis tombé.
Une histoire à laquelle j'étais accro en spécifiant nil comme argument de fonction dans Go
Un mémorandum lors de l'acquisition automatique avec du sélénium
Une note à laquelle j'étais accro lors de l'émission d'un bip sous Linux
Une note à laquelle j'étais accro lors de la création d'une table avec SQL Alchemy
Je veux créer un fichier pip et le refléter dans le menu fixe
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
J'étais accro à pip installer mysqlclient
J'ai essayé de mettre virtualenv dans l'environnement Cygwin
Lorsque j'ai essayé d'exécuter Python, j'ai été ignoré dans le Microsoft Store
Une histoire à laquelle j'étais accro à essayer d'installer LightFM sur Amazon Linux
J'étais accro à la création d'un environnement Python venv avec VS Code
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
[Python] Quand j'ai essayé de créer un outil de décompression avec un fichier zip que je connaissais juste, j'étais accro à sys.exit ()
[Introduction à json] Non, j'en étais accro. .. .. ♬
Quand j'essaye matplotlib en Python, il dit 'cairo.Context'
Quand j'ai essayé de créer un VPC avec AWS CDK mais que je n'ai pas pu le faire
Trois choses auxquelles j'étais accro lors de l'utilisation de Python et MySQL avec Docker
Docker x Visualization ne fonctionnait pas et j'en étais accro, alors je l'ai résumé!
Une note à laquelle j'étais accro lors de l'exécution de Python avec Visual Studio Code
Une histoire à laquelle j'étais accro après la communication SFTP avec python
[Mots qui m'ont été épelés quand j'étais en première année ①] Je n'ai pas peur de créer un environnement de programmation.
J'ai essayé d'implémenter un pseudo pachislot en Python
J'étais accro au grattage avec Selenium (+ Python) en 2020
[Go + Gin] J'ai essayé de créer un environnement Docker
Une histoire à laquelle j'étais accro chez np.where
Python: peut être répété en lambda
J'étais accro à essayer logging.getLogger avec Flask 1.1.x
Ce à quoi j'étais accro lors de l'utilisation de Python tornado
J'ai essayé d'installer scrapy sur Anaconda et je n'ai pas pu
J'étais sobrement accro à appeler awscli à partir d'un script Python 2.7 enregistré dans crontab
Notez que j'étais accro au script npm ne passant pas dans l'environnement de vérification
J'ai essayé de créer un environnement avec WSL + Ubuntu + VS Code dans un environnement Windows
J'ai essayé de faire sonner le téléphone lorsqu'il a été publié sur le poste IoT
Quand un amateur écoutait de la musique anti-phase, c'était déroutant et calme à visiter.
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared
Un débutant a essayé de colorier un dessin au trait avec un chainer. J'ai pu le faire.
Mémo Un débutant a essayé de créer un environnement Java et de le traduire en japonais sur Ubuntu 18.04.2 LTS.
[IOS] Animation GIF avec Pythonista3. J'en étais accro.
J'ai essayé l'algorithme de super résolution "PULSE" dans un environnement Windows
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
Quand j'ai essayé le concours AtCoder pour débutants, c'était un résultat terrible, alors je regarde en arrière
J'ai été surpris de recevoir une belle critique lorsque j'ai écrit Python à CheckIO et son explication
Depuis qu'il y avait Doppelgenger, j'ai essayé de le distinguer avec l'intelligence artificielle (rires) (Partie 2)
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai créé un serveur avec socket Python et ssl et j'ai essayé d'y accéder depuis le navigateur
J'ai essayé d'illustrer le temps et le temps du langage C
Ce à quoi j'étais accro lorsque l'utilisateur de traitement est passé à Python