Contexte
Pourquoi installer avec conda même si pip peut être utilisé dans l'environnement virtuel d'Anaconda? Je me demandais et je voulais savoir s'il y avait une bonne utilisation.
Différence entre «pip» et «conda»
Il a été écrit de manière facile à comprendre sur les blogs Stack Overflow et anaconda.
https://stackoverflow.com/questions/20994716/what-is-the-difference-between-pip-and-conda
https://www.anaconda.com/understanding-conda-and-pip/
1. S'il est possible d'installer des bibliothèques autres que celles écrites en Python
- Dans le cas de pip, seuls les packages créés uniquement en Python peuvent être installés.
--Si vous avez besoin d'une bibliothèque écrite en langage C / C ++ ou R tel que HDF5 ou LLVM, vous devez l'installer séparément.
- Dans le cas de conda, les packages écrits dans des langages autres que Python peuvent également être installés.
- Avec conda, vous pouvez installer des supports pré-construits à partir d'Anaconda Cloud, même pour des bibliothèques telles que NumPy et Matplotlib qui devaient être construites lors de l'installation à partir de PyPI avec pip.
--Par exemple, ** PostgreSQL peut être installé et exécuté avec conda! ** (décrit plus tard)
- Au contraire, les supports au format roue pris en charge par pip ne peuvent pas être installés avec conda. Celui-ci sera installé à l'aide de pip.
2. Si vous pouvez créer un environnement virtuel
- Vous ne pouvez pas le faire avec pip seul.
--Il doit être réalisé à l'aide d'autres outils tels que virtualenv et pipenv.
- Vous pouvez le faire avec juste conda.
- Si vous installez pip dans l'environnement virtuel créé, vous pouvez également utiliser pip.
3. Vérifier la compatibilité de la bibliothèque
- Dans le cas de pip, essayez l'installation dans l'ordre sans vérifier la compatibilité.
- En fonction de l'ordre d'installation, la compatibilité peut ne pas être maintenue et l'environnement peut être détruit.
- Dans le cas de conda, il vérifie la compatibilité et vous indique le résultat.
- Tant que les méta-informations liées à la bibliothèque dépendante du paquet à installer sont correctes, conda veillera à ne pas endommager l'environnement.
J'ai essayé d'installer PostgreSQL avec conda
Pour tester, installez PostgreSQL avec anaconda et essayez de vous connecter.
Cliquez ici pour la référence.
https://gist.github.com/gwangjinkim/f13bf596fefa7db7d31c22efd1627c7a
Créer un environnement virtuel
$ conda create --name myenv
# enter the environment
$ conda activate myenv
Installation de PostgreSQL
$ conda install -y -c conda-forge postgresql
Initialisation PostgreSQL
Initialisez avec le dossier mylocal_db
comme dossier de données.
$ initdb -D mylocal_db
...
Success. You can now start the database server using:
pg_ctl -D mylocal_db -l logfile start
Démarrez PostgreSQL
Je vais commencer immédiatement. Selon l'option ajoutée, l'opération est la suivante.
--Le dossier de données (-D
) est le dossier mylocal_db
initialisé.
--Le fichier journal (-l
) est généré dans fichier journal
--Utilisez le port 5433 (-p 5433
) comme option ( -o
).
$ pg_ctl -D mylocal_db -l logfile -o "-p 5433" start
waiting for server to start.... done
server started
Connectez-vous à PostgreSQL
En exécutant la commande psql, vous pouvez exécuter SQL.
$ psql -d postgres -p 5433
psql (11.2)
Type "help" for help.
postgres=#
Arrêtez PostgreSQL
Exécutez la commande d'arrêt (pg_ctl stop) de la même manière que la commande start (pg_ctl start).
$ pg_ctl -D mylocal_db -l logfile -o "-p 5433" stop
waiting for server to shut down.... done
server stopped
Après tout, comment les utilisez-vous correctement?
Je comprends qu'il existe les cas suivants où l'installation par conda est plus pratique.
- Lors de l'utilisation d'une bibliothèque telle que Numpy qui doit être construite pour chaque environnement en C / C ++ au moment de l'installation
--Lors de l'utilisation d'un autre middleware tel que PostgreSQL est une condition préalable
―― Est-il possible de créer un environnement de développement où tout peut être complété avec un seul Anaconda sans avoir à sortir le Docker?
Au contraire, il peut y avoir des cas où pip est plus pratique. Y en a-t-il beaucoup ici?
--Si vous voulez une implémentation pure Python
--Si le middleware que vous utilisez ne peut pas être installé avec conda