Suite

Démarrer QGIS avec virtualenv Python ?


existe-t-il un moyen de dire à QGIS d'utiliser une installation Python différente de celle par défaut à l'échelle du système ? Par exemple. utiliser du virtualenv Python/myvirtualenv/bin/pythonà la place de/usr/bin/python?

Contexte : je développe un plugin personnalisé qui utilise certains modules qui ne sont installés que dans un certain environnement virtuel, mais pas à l'échelle du système.

Le virtualenv est autorisé à accéder aux packages à l'échelle du système, de sorte que les bibliothèques principales de qgis doivent toujours être accessibles lors de l'utilisation de ce virtualenv.

La seule solution que je vois actuellement est d'installer les modules requis dans Python à l'échelle du système. Cependant, j'aimerais les garder dans le virtualenv uniquement, si possible.


Vous pouvez d'abord charger votre environnement virtuel puis démarrer QGIS dans le même terminal où vous avez chargé l'environnement virtuel.

par exemple sous linux :

source /myvirtualenv/bin/activate qgis

Je ne peux pas garantir que cela fonctionnera, mais vous pourriez peut-être essayer de définir une variable personnalisée pour charger votre version python :


Démarrage d'un virtualenv pour emacs à utiliser

Je commence un Python virtualenv via init.el (ou alors je voudrais):

Pourtant, flycheck ne trouve pas flake8 ou pylint , qui y sont installés. Démarrer emacs dans un terminal avec virtualenv chargé fonctionne bien.

Est-il possible de configurer init.el pour démarrer un environnement virtuel pour flycheck utiliser?

Il semble que cela soit lié à un bogue ouvert dans python-mode.el


Certains de nos clients


Qgis et python venv dans pycharm

Je souhaite utiliser qgis dans le venv de mon application python, mais je continue à obtenir ModuleNotFoundError : aucun module nommé 'qgis'.

Internet dit quelque chose avec des fichiers bat et définit un chemin python. J'ai essayé de créer plusieurs fichiers bat sans succès.

quelqu'un peut m'aider à ce sujet ?

Salut mon pote, j'ai eu quelques commentaires ici qui étaient un peu partout, alors je les nettoie. Voici ce que je suggère :

Utilisez le programme d'installation réseau OSGeo4W pour installer la version Long Term Release (LTR) de QGIS - actuellement 3.4. Supprimez toute ancienne installation OSGeo4W avant de commencer. Dans mes enquêtes, il y avait des problèmes avec la dernière version.

Lancez PyCharm en utilisant un fichier batch comme en bas

Lorsque PyCharm démarre et que vous créez un nouveau projet, développez le menu d'environnement Project Interpreter: New Virtualenv et choisissez l'interpréteur de base sur C:OCGeo4W64appsPython37python.exe et cochez Hériter des packages de site globaux avant de cliquer sur Créer

Attendez que PyCharm mette à jour l'interpréteur (cela prend un certain temps)

C'est tout, tout va bien, vous devriez avoir raison d'y aller

Avez-vous besoin d'exécuter ce script de chargement à chaque fois

Merci!! Cela pourrait être l'installation d'osgeo qui gâche la fête.. Je pense que j'ai installé la dernière, alors j'espère que c'est le cas et je me débarrasse d'arcgis

Tout d'abord big ups, THX. J'ai l'impression que j'y suis presque ! Je peux démarrer le programme avec le fichier .bat et créer un venv et voir les bibliothèques OCGeo (OWSlibm, pyQt5, GDAL), mais je ne peux pas voir qgis.

Lorsque j'importe la lib (comme import qgis.core), une erreur liée à pycharm se produit, voir ci-dessous. ce qui est drôle, c'est que j'ai intellisense dans pycharm. si je tape qgis. et appuyez sur l'onglet je vois core, utils, pyQt, gui.

option 1 : PyCharm Community Edition 2019 2.2 ne fonctionne pas comme 2018 ou est corrompu,- solution possible : rétrograder vers la même version ( PyCharm Community Edition 2018.3.2), (voir ci-dessous)


Démarrer QGIS avec virtualenv Python ? - Systèmes d'information géographique

Construire la documentation

S'il n'est pas fourni par votre système d'exploitation, vous devez installer :

Vous pouvez installer à la fois dans les emplacements par défaut et avec les options par défaut.

Allez dans ce répertoire et suivez les instructions suivantes en fonction de votre système d'exploitation.

La meilleure façon de créer la documentation est dans un environnement virtuel Python (venv).

Pour vérifier/créer le venv et l'utiliser dans la construction :

Le venv.mk créera/mettra à jour un environnement virtuel (s'il n'est pas disponible) dans le répertoire/venv actuel ET exécutera la construction html dedans.

Vous pouvez également utiliser cet environnement virtuel plus tard en :

pour activer le venv, puis exécuter la compilation à partir de ce venv :

Si, pour une raison quelconque, vous souhaitez repartir de zéro :

Vous pouvez également utiliser votre propre environnement virtuel en le créant d'abord :

Avec virtualenv 'activé', vous devriez voir 'venv' dans l'invite. Installez les exigences via le REQUIREMENTS.txt :

Et exécutez la compilation à partir de ce venv :

Vous voulez construire votre propre langage ? Notez que vous utiliserez les traductions des fichiers po de git! Par exemple pour 'nl' faire :

Créez un environnement virtuel appelé « venv » dans ce répertoire (recherchez sur Internet pour Python Virtual Env sur Windows pour plus de détails), mais en bref : utilisez le module « venv » pour créer un environnement virtuel appelé « venv »

Avec virtualenv 'activé', vous devriez voir 'venv' dans l'invite. Installez les exigences via le REQUIREMENTS.txt :

Et exécutez la construction à partir de ce venv, en utilisant le script make.bat avec l'argument html pour construire localement les documents :

Vous voulez construire votre propre langage ? Notez que vous utiliserez les traductions des fichiers po de git! Par exemple 'nl' faire :

Sous Linux, vous pouvez également créer les versions PDF des principaux documents.

Ou après avoir activé le venv :

Pour créer des PDF, vous devrez installer le package du compilateur XeLaTex textlive-xetex et GNU Freefont.

Si vous souhaitez créer des PDF dans une langue autre que l'anglais, vous pouvez utiliser une syntaxe similaire :

Pour créer des PDF traduits, vous devrez peut-être installer le package supplémentaire texlive pour votre langue spécifique (par exemple, texlive-lang-french ). Pour le japonais, il est crucial d'installer texlive-lang-japanese , qui installera le compilateur platex. Si vous envisagez de construire toutes les langues, il peut être plus facile d'installer tous les packages de langues ( texlive-lang-all ), mais cela utilisera une quantité considérable d'espace disque.

Certaines langues nécessiteront également l'installation de polices spécifiques :

  • Corée (ko) - NanumMyeongjo du paquet fonts-nanum
  • Hindi (salut) - Nakula du paquet fonts-nakula

Pour mettre à jour les fichiers po anglais (qui sont utilisés comme fichiers SOURCE dans transifex) :

Pour créer le fichier .tx/config à pousser/tirer à l'aide du client tx, procédez comme suit :

Pour mettre à jour tous les fichiers po de toutes les langues (que nous n'utilisons pas ici ! Ceci est fait par Transifex) :

Nous avons créé un script pour créer les fichiers yaml transifex pour les intégrations github-transifex.


1 réponse 1

Dans mon domaine (science), Anaconda est probablement la distribution Python la plus couramment utilisée. conda est le gestionnaire de paquets (juste pour être clair sur la distinction).

Il est difficile de trouver à redire à conda par rapport à pip+virtualenv.

Le seul point que je voudrais faire est que la distribution Anaconda est censée être installée par utilisateur. Si vous avez un environnement Python partagé entre les utilisateurs, il n'y a aucun moyen de faire l'équivalent de pip install --user avec conda (mais lisez la suite pour une solution surprenante. ). Les utilisateurs ne peuvent pas non plus créer des environnements conda.

Donc, si vous envisagez une installation avec un seul utilisateur, essayez Anaconda. ça vaut le coup d'essayer

Notez que vous pouvez utiliser pip avec Anaconda. ils ne sont pas incompatibles. En fait, cela peut être très utile dans une installation partagée.

J'ai configuré une installation conda d'utilisateur partagé avec laquelle les utilisateurs peuvent installer des packages d'espace utilisateur. pip install --user .

Dans une installation partagée, je ne vois pas comment les utilisateurs peuvent créer leurs propres environnements conda (conda a des environnements). Et je parie que conda+virtualenv serait un gâchis.

Notez que conda n'est pas lié à Python : d'abord, vous pouvez avoir une installation de conda avec Python 2 et 3 - et conda gère très bien les environnements. Mais vous pouvez aussi demander à conda d'installer Perl, R. En fait, c'est assez courant. Notre interprète Perl est fourni par Anaconda)

De plus, je soupçonne que conda est probablement plus puissant sous Linux et Mac OS. Windows est moins bien supporté. Pour les autres systèmes d'exploitation, il n'y a probablement pas de packages (ou ils seront limités).


J'ai fait fonctionner cela avec plusieurs virtualenvs simultanément en utilisant org-babel :session et pyvenv.

Noter ce scratchenv-SNmPgRMB est le nom de l'un de mes environnements personnels créés à l'aide de pipenv, remplacez-le par le nom de votre environnement virtualenv.

Lisez le paragraphe si vous avez besoin de plusieurs virtualenvs simultanés. Une chose importante à noter à propos de cette approche est que vous doit exécutez l'interpréteur shell et python une fois avant d'ajouter une autre session avec un environnement virtuel différent. Le raisonnement en est que lorsque org-babel démarre une session pour sh et python, il lance un interpréteur. Cela signifie qu'au minimum, vous devez exécuter ces trois blocs avant de démarrer une nouvelle session virtualenv.


Démarrer QGIS avec virtualenv Python ? - Systèmes d'information géographique

Configuration d'une station de travail Fedora 21 QGIS

Je suis un utilisateur d'Ubuntu de longue date (je l'utilise depuis Ubuntu 4.10 'Warty Warthog') - la première version officielle. L'avènement d'Ubuntu a mis fin à mon saut de distribution tout en recherchant la «distro Linux parfaite».

Comment construire et déboguer QGIS avec QtCreator

Voici comment je construis QGIS avec QtCreator sous ubuntu 14.04

Gary Sherman remporte le prix Sol Katz

Cette année, Gary Sherman a remporté le prix annuel Sol Katz. Pour citer la page de l'OSGEO sur le prix :

Plugin WMS Legend pour dépliant

Ce week-end, je mettais à jour notre galerie de cartes sur http://maps.kartoza.com et je voulais avoir des légendes WMS dans mes cartes. Les cartes sont principalement générées à l'aide du serveur QGIS qui produit également un joli graphique pour ses requêtes getLegendGraphic. Étant donné que Leaflet ne semble pas avoir de contrôle de légende prêt à l'emploi, j'ai écrit un petit plugin de brochure pour le faire.

Nodeenv : Comment installer nodejs dans un virtualenv python

Chez Kartoza, travailler dans des environnements virtuels python est notre modus operandi par défaut lors du lancement de tout développement python. Depuis un certain temps, nous apprécions yuglify, tilemill et d'autres applications basées sur node.js dans le cadre de notre flux de travail, et au début de mon utilisation de ces technologies, j'ai découvert nodeenv - principalement parce que j'avais été mordu au cul par différentes applications de nœud sur le même hôte s'attend à avoir des versions différentes de node.js. Nodeenv fournit un environnement de type python virtualenv pour le sandboxing de vos applications de nœud afin que chacune puisse s'exécuter sous sa propre version discrète de node.js. Il fonctionne à peu près comme le fait python virtualenv et en fait il nécessite virtualenv donc pour les pythonistas c'est un très bon ajustement ! Dans cet article, je documente les étapes nécessaires pour faire fonctionner le nœud dans un tel environnement.

Jouer avec des wrappers de données étrangères dans PostgreSQL

Récemment, j'ai essayé le wrapper de données étrangères PostgreSQL (FDW) car j'avais besoin d'accéder aux données qui se trouvaient dans les tables MySQL. La principale raison pour laquelle j'avais besoin de jouer était d'exposer mes données à une gamme de fonctions PostgreSQL meilleures et plus récentes que MySQL. J'avais également besoin d'utiliser les données MySQL pour les vues et les recherches et le style basé sur les données pour certaines couches Geoserver. Les FDW permettent l'accès à distance aux tables ou aux requêtes à partir de diverses bases de données ou structures de fichiers tierces externes.

MyCOE GCE TechCamp

L'AAG (American Association of Geographers) et le Département d'État américain, par l'intermédiaire d'EIS Africa, ont dirigé l'édition sud-africaine du GCE MyCOE Youth TechCamp du 13 au 23 juillet 2014. Kartoza et son ancienne incarnation Afrispatial, ont été recrutés pour diriger le projet technique. et les aspects éducatifs du TechCamp. Le TechCamp était dix jours d'échanges culturels couplés à un apprentissage pratique des SIG autour d'un thème du changement climatique. L'objectif principal du programme était de stimuler le rôle de la géographie chez les étudiants et d'enseigner comment les nouvelles technologies font progresser l'utilisation de la géographie dans le monde réel pour résoudre des problèmes.

L'excellente équipe du département de géographie de l'Université de Pretoria a accueilli le TechCamp (voir leur article), tandis que nous avons tous séjourné au camp de jeunes d'Altelekker à Irene. Trente-sept élèves du secondaire âgés de 15 à 17 ans ont suivi des cours de SIG, se sont renseignés sur les problèmes liés au changement climatique, ont écouté des conférenciers invités comme Colleen Vogel et Roger Ellis, ont fait des excursions à Freedom Park, Maropeng, Sterkfontein Caves et Dinokeng et eu beaucoup de plaisir. Les étudiants ont été sélectionnés au cours des six mois précédents par le biais d'un processus concurrentiel : dix des États-Unis et le reste de l'Afrique du Sud. Les élèves des deux pays venaient d'horizons divers : écoles privées et publiques, rurales et urbaines, favorisées et défavorisées. Certains connaissaient l'informatique et avaient même remporté des prix SIG, tandis que d'autres avaient à peine touché un ordinateur. L'objectif principal de l'intégration de ces étudiants était d'initier un transfert de compétences ainsi qu'un échange culturel.

Le cadre de la plupart des conférences était l'Université de Pretoria, qui a été soigneusement choisie pour stimuler les participants à apprécier ce qu'est l'université et leur faire prendre conscience que la géographie peut être considérée comme une carrière. Le projet sur le changement climatique s'est concentré sur les problèmes liés à l'eau autour du lac Centurion : pollution, planification, dolomite et gouffres. Nous avons préparé des ensembles de données couvrant Gauteng, y compris des images satellite, un DEM, des couches OpenStreetMap, des couches de métro de Tshwane, de la géologie et d'autres données publiques. Ceux-ci ont été provisionnés à partir d'une base de données centrale PostGIS et de bases de données Spatialite sur des clés USB. Les étudiants ont appris les bases du SIG, en passant par la numérisation, l'analyse de base et la composition de cartes, le tout à l'aide de QGIS. Ils ont tous emporté les données et le logiciel QGIS chez eux pour les partager et les distribuer.

À la fin du TechCamp, les compétences des étudiants en informatique et en SIG étaient phénoménales. Ils ont été mis à profit dans le "TechTorrent" du dernier jour, où chacune des huit équipes a présenté les projets de recherche qu'elle avait développés toute la semaine. Leurs présentations ont utilisé des outils tels que Prezi et ESRI Storymaps et toutes les cartes contenues dans QGIS.

avec des contributions d'Admire Nyakudya et Bridget Fleming

Comment transformer rapidement un cadre de délimitation d'un SCR à un autre à l'aide de QGIS

Aujourd'hui, j'avais besoin de convertir un cadre de délimitation pour un projet de moulin à carreaux que je souhaite importer dans QGIS en tant que couche de tuiles (plus à ce sujet dans un futur article si je le fais fonctionner. ). J'avais besoin de convertir un cadre de délimitation des coordonnées EPSG:4326 ('Geographic') en EPSG:3857 (Spherical Mercator). Heureusement, c'est un processus assez trivial si cela ne vous dérange pas d'écrire quelques lignes de python dans la console python de QGIS :

Exécuter QGIS Desktop dans un conteneur Docker

J'adore utiliser docker - j'ai suivi et appris Docker peu de temps après son annonce et je pense que cela va vraiment changer la donne. J'ai joué avec les différentes choses que l'on peut faire dans un conteneur docker et bien sûr, il est tout à fait naturel qu'un « gars de QGIS » comme moi commence à penser à utiliser docker avec QGIS. Le serveur QGIS dans un conteneur Docker semble être une solution naturelle, mais qu'en est-il de QGIS Desktop ? Hier soir, Richard Duivenvoorde et moi étions assis autour de boire du thé et nous avons pensé que nous allions essayer rapidement - en fait, cela n'a pris qu'environ une demi-heure pour que quelque chose fonctionne.


CentOS (rel6) avec python 2.6 par défaut, mais installation 3.3.5 séparée

J'ai un serveur CentOS (rel6) sur lequel python est installé (2.6), mais j'avais besoin de quelques fonctionnalités dans 3.3+. J'ai installé 3.3 dans un dossier séparé et créé un lien symbolique pour l'exécuter :

  1. J'ai installé les outils de configuration : yum install python-setuptools
  2. J'ai installé un module nécessaire "pandas" easy_install pandas
  3. J'ai exécuté mon script pyton, qui a rencontré une erreur qui nécessitait que j'utilise une version plus récente
  4. J'ai téléchargé et installé Python 3.3.5 dans son propre dossier afin de ne pas remplacer mon python par défaut
    • wget http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
    • tar xJf ./Python-3.3.5.tar.xz
    • cd ./Python-3.3.5
    • ./configure --prefix=/opt/python
    • Fabriquer
    • faire installer
  5. Lien symbolique créé pour me permettre d'exécuter ce nouveau python :
    • ln -s /opt/python3.3/bin/python3.3

Le problème est que lorsque j'exécute le script python avec mon nouvel alias py, il n'a pas tous les addons nécessaires (explicitement MySQLdb), ce que fait l'installation par défaut.

Comment dois-je procéder pour installer le module MySQLdb, ou tout autre module d'ailleurs, pour qu'il soit accessible ou utilisable pour la nouvelle installation de Python 3.3.5 ? Ou existe-t-il un moyen de rendre les modules actuels de la version 2.6 également disponibles pour la version 3.3.5 ?


1 réponse 1

Vous devez toujours suivre les instructions et mettre en place le contexte requis. Cela se fait normalement lors de la connexion au shell graphique, mais comme vous utilisez un système sans tête, vous devez créer l'environnement.

Cela signifie soit que vous vous connectez (à l'aide de ssh ) et exécutez les programmes à partir de la ligne de commande comme spécifié dans "Utilisation du trousseau sur des systèmes Linux sans écran), puis démarrez votre propre programme, soit que vous créez un script qui effectue toutes ces actions.

Si votre programme doit être démarré à partir de crontab, la deuxième option (créer un script qui fait toutes les choses requises, puis démarrer votre programme Python) est la voie à suivre.

Veuillez noter que votre environnement lors de l'exécution d'un script à partir de cron est différent, y compris un PATH très restreint où les commandes sont recherchées.

L'exécution à partir d'un virtualenv est automatique si votre programme est installé en tant que point d'entrée de package (c'est-à-dire que vous avez fait /path/to/your/virtualenv/bin/python setup.py install ). Si vous n'avez pas fait de votre programme un package, il suffit de le démarrer comme :

pour utiliser réellement tous les packages installés dans votre virtualenv.

Vous devriez pouvoir suivre les étapes spécifiées dans votre programme python, mais cela s'écarte de la description (qui suppose que vous avez un shell). Donc, à moins que vous ne soyez expérimenté dans ces domaines, je m'en tiendrai à la création d'un script shell qui exécute les étapes, puis appelle votre programme python.


Voir la vidéo: Use Python and QGIS pyQGIS to Automate GIS Tasks and Workflows (Octobre 2021).