Suite

Impossible d'installer la version correcte de GDAL pour utiliser ReadAsArray sans obtenir d'erreur dans Python


En utilisant les instructions ici… https://pythongisandstuff.wordpress.com/2011/07/07/installing-gdal-and-ogr-for-python-on-windows/ J'ai téléchargé les fichiers suivants : GDAL-1.11.1.win -amd64-py2.7.msi et gdal-111-1800-x64-core.msi

Après avoir fait cela, j'ai pu créer mon script Python (qui manipule les données DTED) et exécuter ce script à partir de mon code C#.

Ensuite, j'ai rencontré quelques problèmes en essayant de manipuler les valeurs de pixels du fichier DTED : 1) J'essaie d'utiliser ReadAsArray et j'obtiens "ImportError: No module named _gdal_array" sur la ligne de mon script Python… data = rb .ReadAsArray(0, 0, cols, rows) Référence à : Impossible d'importer gdal_array http://lists.osgeo.org/pipermail/gdal-dev/2011-May/028708.html 2) J'ai aussi pensé que je pourrais utiliser gdallocationinfo … http://www.gdal.org/gdallocationinfo.html J'obtiens une erreur de syntaxe sur le nom du fichier…

gdallocationinfo C:DataTestFilesTST.DT1 1000 1000 SyntaxError : syntaxe invalide

Je trouve qu'il donne un message d'erreur sur n'importe quel nom de fichier que j'entre.

Par conséquent, j'ai installé OSGeo4W afin de pouvoir utiliser certaines des fonctions GDAL mentionnées ci-dessus dont j'aurais besoin (après avoir lu ceci https://hub.qgis.org/issues/8811). En exécutant OSGeo4W Shell, j'ai pu taper ceci sur la ligne de commande et obtenir le résultat souhaité :

C:>gdallocationinfo C:DataTestFilesTST.DT1 1000 1000 Rapport : Emplacement : (1000P,1000L) Bande 1 : Valeur : 859

Le problème est que je ne pense pas pouvoir utiliser un script Python avec ce shell OSGeo4W, ce qui signifie que je devrais exécuter un autre type de script à partir de mon code C#, je suppose.

Y a-t-il d'autres versions des fichiers msi que j'aurais dû télécharger au lieu de GDAL-1.11.1.win-amd64-py2.7.msi et gdal-111-1800-x64-core.msi ?

Je ne sais juste pas quelle approche je dois adopter.


J'ai pu contourner ce problème en utilisant ReadRaster :

depuis osgeo import gdal,ogr ds = gdal.Open( 'C:/Data/TestFiles/DtedFile.DT1' ) rb=ds.GetRasterBand(1) import struct xsize = rb.XSize ysize = rb.YSize datatype = rb.DataType #Lecture des valeurs raster values ​​= rb.ReadRaster( 0, 0, xsize, ysize, xsize, ysize, datatype ) #Conversion entre les types GDAL et les types de pack python data_types ={'Byte':'B','UInt16':' H','Int16':'h','UInt32':'I','Int32':'i','Float32':'f','Float64':'d'} values ​​= struct.unpack(data_types [gdal.GetDataTypeName(rb.DataType)]*xsize*ysize,values) #Maintenant, vous pouvez afficher n'importe laquelle de ces valeurs dans le tableau. print(valeurs[35])

APT est un système de gestion de paquets pour Debian et d'autres distributions Linux basées sur celui-ci, comme Ubuntu. Pour la plupart, APT est facile à utiliser pour installer, supprimer et mettre à jour des packages. Dans de rares cas, souvent lorsque vous mélangez des dépendances tierces, il est possible qu'apt-get finisse par vous donner une erreur vous indiquant qu'une installation de package n'a pas pu être terminée.

C'est toujours une bonne idée de sauvegarder les fichiers de configuration comme /etc/apt/sources.list , afin de pouvoir annuler les modifications si nécessaire.

Si l'erreur affiche quelque chose comme ceci :

<some-package> : Dépend : <other-package> (= version) mais cette version doit être installée

Assurez-vous ensuite que les référentiels restreints et d'univers sont activés. Appuyez sur Alt + F2 , tapez software-properties-gtk et appuyez sur Entrée .

Sous l'onglet Logiciel Ubuntu, activez tous les référentiels.

Une cause possible de dépendances non satisfaites pourrait être une base de données de packages corrompue et/ou certains packages n'ont pas été installés correctement. Pour résoudre ce problème, appuyez sur Alt + Ctrl + T pour ouvrir le terminal et essayez d'exécuter l'une des commandes suivantes :

apt-get clean efface le référentiel local des fichiers de package récupérés (les fichiers .deb). Il supprime tout sauf le fichier de verrouillage de /var/cache/apt/archives/ et /var/cache/apt/archives/partial/. apt-get autoclean efface le référentiel local des fichiers de package récupérés, mais contrairement à apt-get clean , il ne supprime que les fichiers de package qui ne peuvent plus être téléchargés et sont en grande partie inutiles.

L'un des correctifs les plus élémentaires pour résoudre les problèmes de dépendances consiste à exécuter :

Le -f signifie ici « fixe cassé ». Apt tentera de corriger les dépendances brisées. Si vous avez installé manuellement un package qui avait des dépendances non satisfaites, apt-get installera ces dépendances, si possible, sinon il peut simplement supprimer le package que vous avez installé afin de résoudre le problème.

0 mis à niveau, 0 nouvellement installé, 0 à supprimer et 1 non mis à niveau.

S'il affiche des paquets bloqués, il est préférable de les éliminer. Les packages sont conservés en raison de conflits de dépendances qu'apt ne peut pas résoudre. Essayez cette commande pour rechercher et réparer les conflits :

S'il ne peut pas résoudre les conflits, il se terminera avec :

0 mis à jour, 0 nouvellement installé, 0 à supprimer et 6 non mis à niveau.

Supprimez les packages suspendus un par un, en exécutant dist-upgrade à chaque fois, jusqu'à ce qu'il n'y ait plus de packages suspendus. Ensuite, réinstallez tous les packages nécessaires. Assurez-vous d'utiliser l'option --dry-run, afin d'être pleinement informé des conséquences :

Étant donné que la suppression du package que vous essayez d'installer n'est peut-être pas idéale, vous pouvez également essayer de trouver un référentiel contenant les packages dont vous avez besoin pour satisfaire les dépendances.

Enfin, si tout le reste échoue, vous pouvez tenter de satisfaire les dépendances vous-même, soit en trouvant et en installant les packages nécessaires, soit en les installant à partir des sources, puis en créant des packages « deb » pour eux.


(Cette méthode nécessite la mise à jour des liens symboliques lorsque les versions changent, c'est-à-dire pas idéale)

Pour ceux qui utilisent des homebrews, il est probablement préférable d'utiliser simplement un lien symbolique, sinon toutes sortes de ravages pourraient survenir. par exemple. le binaire python officiel modifiera votre

./bash_profile pour que python3 et pip3 ne pointent plus vers le brassage.

Dans mon cas, j'ai maintenant lié symboliquement la version homebrew (dans le sens de la discussion dans la réponse fournie par @Evenfire):

QGIS3 s'est alors plaint de l'absence de certains packages python, qui peuvent être installés avec pip3, par ex.

Cela pourrait aussi se plaindre de gdal , dans mon cas, j'ai simplement utilisé brew:


2 réponses 2

Ton schéma est le suivant :

Ci-dessus, vous pouvez voir que $R_2$ et $Z_2$ forment un diviseur de tension qui divise $V_Y$ en $V_ ext$ . Il s'ensuit que :

Faisons cela dans sympa:

Ensuite, je viens de construire ce schéma:

Donc quel est le problème?? Je pense que vous devez regarder de plus près soit votre processus d'algèbre, soit les fautes de frappe dans votre fonction laplace. J'ai utilisé une opération "copier/coller" directement de sympy vers LTspice, pour minimiser les risques d'erreur.

Quand je vois le nombre de lignes jetées sur la page blanche par l'OP comme une tentative de dériver cette fonction de transfert de troisième ordre, je pense qu'il est grand temps que les techniques de circuits analytiques rapides ou les FACT soient enseignées dans les universités. Le principe est simple et, très souvent, fonctionne avec inspection: il suffit de regarder le circuit pour en déduire les constantes de temps sans écrire une seule ligne d'algèbre. L'exercice consiste à déterminer la résistance $R$ offerte par chaque élément de stockage d'énergie lorsque le circuit est observé avec une excitation nulle ou avec une réponse nulle. Une fois que vous avez le $R$ , vous pouvez former une constante de temps exprimée sous la forme $ au=RC$ ou $ au=frac$ .

Nous commençons donc par un tas de petits croquis pour déterminer le Naturel constantes de temps de ce circuit linéaire. Nous réduisons l'excitation à zéro volt (la source d'entrée est remplacée par un court-circuit) et vous "regardez" à travers l'élément de stockage d'énergie temporairement déconnecté du circuit pour trouver la résistance $R$ entraînant cet élément :

Comme vous pouvez le voir, il vous suffit d'inspecter le dessin pour voir, dans votre tête, quelle résistance offrent les bornes en question (où pointe la flèche). Et si vous faites une erreur, il est facile et rapide de revenir sur le circuit et de corriger la résistance $R$ que vous avez déterminée par erreur.

Pour les zéros, vous pouvez faire ce qu'on appelle une double injection nulle (NDI) mais je préfère souvent pour le cas passif, pour déterminer les gains haute fréquence : la source est remise en place et vous inspectez le circuit pour déterminer quels sont les gains sont lorsque des éléments de stockage d'énergie sont placés alternativement dans leur état à haute fréquence :

Vous pouvez voir à quel point c'est facile ! Lorsque vous disposez de tous ces éléments, vous les assemblez dans une feuille Mathcad qui a) vérifiera l'homogénéité des formules et b) vous permettra de comparer la réponse obtenue par les FACTs et celle délivrée par l'approche force brute (Thévenin en ce cas):

Ensuite, vous pouvez tracer l'amplitude et la phase tout en comparant les deux réponses dans des tracés similaires. Ils correspondent parfaitement comme indiqué ci-dessous :

Vous pouvez voir à quel point les FACT sont faciles à comparer aux méthodes classiques KVL et KCL. Vous appliquez le diviser et conquérir stratégie promue par le Dr Middlebrook et résolvez votre circuit étape par étape avec la possibilité de revenir et de résoudre un mauvais résultat intermédiaire. Il n'y a aucun moyen de le faire avec l'approche de la force brute.

L'acquisition de la compétence FACTs est simple et vous pouvez commencer par des circuits de 1er ordre comme indiqué dans le séminaire APEC que j'ai enseigné en 2016. Ensuite, pour une description approfondie de la méthode jusqu'à l'ordre $N$ , vous pouvez avoir un regard sur le livre que j'ai publié sur le sujet.


6 réponses 6

Edit : Bien que l'application se lance maintenant, elle ne me permet toujours pas de numériser. Trouvé ceci https://forums.macrumors.com/threads/hp-driver-framework-broken-in-catalina-10-15-7.2262865/post-29100622 disant que le certificat de HP a été révoqué, et nous sommes SOL jusqu'à ce que HP le répare.

J'ai eu le même problème ce matin, j'ai fait une recherche et j'ai trouvé ça. Apparemment, il existe une version sur l'App Store. J'ai téléchargé ça et boum ça marche. Je suppose qu'ils veulent que vous utilisiez celui qui a été "vérifié".

Ce message se produit lorsque le certificat utilisé pour signer le logiciel est révoqué. Le système d'exploitation vérifie les révocations en ligne, donc oui, il bloque les applications même si vous ne mettez pas à jour les applications ou le système d'exploitation.

Pour les imprimantes et scanners HP, le problème est la révocation des certificats que HP a utilisés pour signer leur logiciel, et non pas que macOS recherche les certificats révoqués. Les choses fonctionnent techniquement comme elles le devraient, mais du point de vue du support et de la culture, je suis certain que des milliers (peut-être des millions) de personnes réalisent « soudain » que cela est intégré à leur système d’exploitation.

La grande majorité des applications HP pour macOS (qui sont légèrement différentes des talons de pilotes nécessaires à l'impression) ont été signées par des certificats désormais révoqués.

Vous avez raison de scanner le logiciel ne fonctionnera que si vous ignorez les applications signées révoquées ou si vous mettez à jour votre logiciel. Voici le package que nous avons poussé à des milliers de Mac vers midi hier pour répondre à la révocation de certificat spécifique d'hier.

Exécutez les mises à jour logicielles et vous devriez voir les mises à jour pour HP ou, dans le pire des cas, voir si vous pouvez obtenir de l'aide de leur part (ils seront très occupés les prochains jours pendant que tout s'arrange)

Si vous souhaitez vérifier votre logiciel, voici deux applications que j'aime et que j'utilise pour vérifier les certificats et le statut de signature.

J'ai essayé de mettre à jour le pilote de HP, mais cela n'a pas beaucoup aidé.

Une fois la désinstallation terminée, j'ai réinstallé le dernier pilote HP et ce message a disparu. Maintenant, je peux imprimer et numériser sans problème.

Instructions HP Easy Start : Veuillez mettre à jour votre logiciel à l'aide de HP Easy Start.

  1. Télécharger HP Easy Start
  2. Suivez les invites pour configurer votre imprimante. Lorsque vous accédez au téléchargement du logiciel, il indique si le logiciel doit être mis à jour ou non. Si c'est le cas, la case à côté de Printer Essentials sera cochée par défaut et il vous suffit de sélectionner le bouton Installer. https://h30434.www3.hp.com/t5/Printers-Knowledge-Base/quot-HPxxxxx-framework-quot-will-damage-your-computer-quot/ta-p/7825233

TLDR Réinstallez l'imprimante à l'aide de l'"Imprimante laser PCL générique" (même s'il s'agit d'un jet d'encre !).

J'ai eu ce problème avec mon HP Officejet H470 après la mise à niveau vers Big Sur (avertissement cela endommagerait mon ordinateur)

Je l'ai désinstallé mais je n'ai pas pu installer le logiciel HP car il m'a donné cet avertissement :

J'ai ensuite retiré l'imprimante et l'ai rajoutée à l'aide de l'"imprimante laser PCL générique" (même si c'est un jet d'encre !). Yay :

Non désolé. Ce particulier le message n'indique pas que macOS a décidé de bloquer quoi que ce soit. Cette formulation est si clairement erronée qu'elle indique que quelqu'un essaie de vous arnaquer. Prolly, l'arnaque impliquera une instruction/suggestion pour remplacer le logiciel "suspect".

Je fournis un support technique aux utilisateurs Apple et HP depuis avant qu'il n'y ait des Mac, sans parler de macOS, et je n'ai jamais vu ou entendu parler de cette formulation.

Le sens est exactement comme spéculé mais le formulation ne vient ni d'Apple ni de HP

Si vous avez des contrats d'assistance, appelez Apple et HP et demandez-leur d'ignorer le sens général et d'expliquer la formulation spécifique.

À défaut, ici au Royaume-Uni, vous pourriez poser la même question quelque part comme Stormfront… la meilleure chose à côté d'un Apple Store mais avec des prix raisonnables.

' "HP Scanner 3" endommagera votre ordinateur…' n'est pas une expression utilisée par Apple ou HP. S'il était authentique, ce serait au mieux une formulation à la Windows… d'autant plus intéressante que les marchands de logiciels malveillants ont tendance à se sevrer sous Windows.

'ce fichier a été téléchargé à… une date inconnue' n'est pas un détail qui intéresserait Apple ou HP, même si c'était leur formulation. « d'une source inconnue » peut fonctionner - bien que généralement, macOS ou ses affiliés soient trop zélés et « avertissent » le pauvre utilisateur de quelque chose qui n'a pas du tout d'importance.

« Signaler les logiciels malveillants (à Apple) pour protéger les autres » pourrait être un libellé de style Windows, s'il était authentique.


PKG_CONFIG_PATH est une variable d'environnement qui spécifie des chemins supplémentaires dans lesquels pkg-config recherchera ses fichiers .pc.

Cette variable est utilisée pour augmenter le chemin de recherche par défaut de pkg-config. Sur un système Unix typique, il recherchera dans les répertoires /usr/lib/pkgconfig et /usr/share/pkgconfig . Cela couvrira généralement les modules installés sur le système. Cependant, certains modules locaux peuvent être installés dans un préfixe différent tel que /usr/local . Dans ce cas, il est nécessaire de préfixer le chemin de recherche afin que pkg-config puisse localiser les fichiers .pc.

Le programme pkg-config est utilisé pour récupérer des informations sur les bibliothèques installées dans le système. L'utilisation principale de pkg-config est de fournir les détails nécessaires pour compiler et lier un programme à une bibliothèque. Ces métadonnées sont stockées dans des fichiers pkg-config. Ces fichiers ont le suffixe .pc et résident dans des emplacements spécifiques connus de l'outil pkg-config.

Pour vérifier la valeur PKG_CONFIG_PATH, utilisez cette commande :

Pour définir la valeur PKG_CONFIG_PATH, utilisez :

Pour voir où pkg-config (version 0.24 ou ultérieure) recherche les bibliothèques installées par défaut, utilisez la commande suivante :

Pour ajouter à ce chemin, définissez la variable d'environnement PKG_CONFIG_PATH. Le fichier man indique que PKG_CONFIG_PATH est :

Une liste de répertoires séparés par des deux-points (sous Windows, séparés par des points-virgules) pour rechercher des fichiers .pc. Le répertoire par défaut sera toujours recherché après avoir recherché le chemin, le chemin par défaut est libdir/pkgconfig:datadir/pkgconfig où libdir est le libdir où pkg-config et datadir est le datadir où pkg-config a été installé.

La première réponse n'est pas assez explicite techniquement. Depuis la page de manuel (ouvrez un terminal, tapez man pkg-config ):

pkg-config récupère les informations sur les packages à partir de fichiers de métadonnées spéciaux. Ces fichiers sont nommés d'après le package et ont une extension .pc. Sur la plupart des systèmes, pkg-config recherche ces fichiers dans /usr/lib/pkgconfig , /usr/share/pkgconfig , /usr/local/lib/pkgconfig et /usr/local/share/pkgconfig. Il cherchera en outre dans la liste des répertoires séparés par des deux-points (sous Windows, séparés par des points-virgules) spécifiés par la variable d'environnement PKG_CONFIG_PATH.

Ainsi, le programme pkg-config n'est pas dans le répertoire PKG_CONFIG_PATH, cependant, si vous installez une bibliothèque, pour que les informations permettant de l'utiliser dans un script automake soient accessibles, elles doivent être dans un répertoire que pkg-config connaît.

Vous essayez de créer un logiciel, disons Widget. Widget s'appuie sur une autre bibliothèque, libcog pour des raisons d'argumentation. Le processus de construction de Widget (probablement un script de configuration) utilise pkg-config pour déterminer comment utiliser libcog. pkg-config ne connaît rien à libcog.

Si libcog n'est pas installé, c'est votre problème. Il y a de fortes chances qu'une installation standard de libcog résolve le problème. En fonction de votre système, vous devrez peut-être installer une version "développeur" supplémentaire du package, il a souvent "-devel" ou "-dev" à la fin, donc si vous installez "libcog", vous devrez peut-être également installer " libcog-devel".

Si libcog est installé, il n'est probablement pas installé de manière à ce que pkg-config puisse le trouver. Il y a probablement un fichier libcog.pc quelque part sur votre système. Pour les besoins de l'argument, c'est dans /opt/cog/lib/pkgconfig/libcog.pc. Dans ce cas, vous pouvez en informer pkg-config en définissant PKG_CONFIG_PATH dans le répertoire contenant libcog.pc. Donc dans un shell Bourne ou similaire, quelque chose comme

Une fois cela fait, la réexécution de la commande qui a échoué fonctionnera, espérons-le.


Si vous installez un package via les sources logicielles et que vous ne téléchargez pas le package vous-même, vous obtiendrez de nouvelles mises à jour de ce package et les installerez via le gestionnaire de mise à jour.

Vous pouvez simplement installer MYPACKAGE en tapant dans un terminal :

ou en utilisant le centre logiciel et en recherchant MONPACKAGE . Mais si ce n'est pas là, allez avec la source.

/yourprogram/bin dans votre $PATH ou créez des liens symboliques vers celui-ci dans

Ceci n'est valable que pour les fichiers .tar.* dont le code est pré-compilé mais compressé dans un fichier tar.

D'accord, c'est une tâche assez difficile pour un débutant, mais suivez simplement mes instructions, et ça devrait aller.

Tout d'abord, téléchargez le fichier .tar.* et enregistrer il. Ne l'ouvrez pas. (Dans ces exemples, j'installerai la version bêta de Dropbox, car j'allais l'installer de toute façon, alors j'ai pensé que je pourrais aussi bien documenter l'installation.)

Après avoir téléchargé votre fichier, (en supposant que vous l'ayez enregistré dans Téléchargements ,) saisissez ce qui suit :

REMARQUE : utilisez le nom du fichier que vous avez téléchargé. (par exemple, pour la version 64 bits de Firefox Nightly 19.0a1, vous devez taper sudo cp firefox-19.0a1.en-US.linux-x86_64.tar.bz2 /opt/ )

Maintenant, accédez au répertoire /opt/, extrayez le programme et supprimez l'ancien fichier :

(encore une fois, utilisez le nom du fichier téléchargé. N'oubliez pas l'extension.)

D'accord, vérifiez comment s'appelle le dossier extrait :

vous obtiendrez quelque chose comme ceci :

D'accord, dans notre exemple, nous avons installé Dropbox et le seul dossier s'appelle .dropbox-dist . C'est probablement le dossier que nous voulons, alors branchez-le à l'étape suivante (ajoutez un / à la fin, car c'est un dossier.):

Bon, il est maintenant marqué comme exécutable, il est donc temps de créer un lien symbolique (c'est ce qui permet de l'exécuter depuis le Terminal) :

REMARQUE : il s'agit de sudo ln -s /opt// /usr/bin/ . Assurez-vous que est remplacé par la version simplifiée en minuscules du nom du programme (par exemple, pour Firefox Nightly, tapez firefox-nightly pour le serveur uTorrent, tapez utserver . Quoi que vous tapiez ici, ce sera la commande que vous utiliserez chaque fois que vous exécuterez le programme à partir du Terminal. Considérez /usr/bin/ comme la variable PATH sur les systèmes Windows.)

D'accord, vous avez terminé. Le programme est maintenant installé et exécutable à partir du terminal.
Qu'est-ce que c'est ça? Vous dites que vous voulez l'exécuter à partir du lanceur ET que vous voulez qu'il ait une icône ? Aucun problème!

Cette partie est assez simple :

REMARQUE : si vous installez SUR une installation précédente, utilisez ls -a /usr/share/applications et recherchez le fichier .desktop préexistant. Branchez le nom de ce fichier à la place.

Maintenant, voici où vous créez l'icône. Voici un bon modèle, modifiez-le de manière appropriée.

Vous voudrez peut-être laisser complètement l'option MimeType. Cela pourrait être très mauvais si vous ne le faisiez pas.


Selon ce bogue, le correctif consiste à utiliser un chemin complet. Voici donc la bonne ligne dans le .ssh/config :

La ProxyCommand doit appeler ssh avec l'extension .exe, par exemple :

La longue (?) histoire

L'exécution de ssh -vvv XXX montre :

Selon le document CreateProcess sur MSDN, je suppose que posix_spawn appelle CreateProcess d'une manière dont l'argument lpApplicationName doit être un chemin exact et absolu. Après avoir spécifié le suffixe .exe, il semble être corrigé.

J'ai eu la même erreur, mais c'était à cause de la variable d'environnement DISPLAY définie sur une certaine valeur. Une fois que vous avez désactivé cette variable d'environnement, l'erreur a disparu.

Ce problème est lié à un bogue dans l'implémentation d'OpenSSH Windows. Ce bogue est corrigé avec la version 8.1.0.0. Des instructions détaillées sur la façon de corriger la version peuvent être trouvées ici

Puisque netcat n'est pas disponible sur un système par défaut, les deux entrées suivantes dans le fichier .ssh/config feront l'affaire (en supposant que le nom d'utilisateur local et le nom d'utilisateur distant soient distincts).

login.bar : système pour se connecter
jump.bar : jumphost
<username> : nom d'utilisateur distant sur login.bar et jump.bar (s'ils sont distincts [email protected] est nécessaire). Si vous omettez [email protected] devant jump.bar, le nom d'utilisateur local est pris.

Dans les deux cas, connectez-vous à login.bar avec : ssh foo


Alors. Tout d'abord, grâce à @SwAt.Be, il m'a poussé dans le bon sens. Deuxièmement, le débogage de Magento 2 DI est vraiment nul. J'espère que les gars de Magento le répareront un jour.

Certains des modèles de base nécessitent que la zone soit définie.

Si vous injectez directement ces modèles dans votre constructeur de classe personnalisé, et que cette classe est à son tour injectée ailleurs, et qu'une classe de cette chaîne est injectée dans votre classe de commande de console personnalisée, alors chaque exécution de php bin/magento provoquera ' L'indicatif régional n'est pas défini'.

C'est une spécificité de Magento 2 Dependency Injection. En mode développeur, il exécute chaque code constructeur de chaque classe injectée avant l'initialisation réelle de magento. Vous ne pouvez pas voir ce qui s'est passé pour le moment (remarque : c'est possible lorsque vous exécutez manuellement setup:di:compile)

Comment déboguer

Essayez simplement d'exécuter setup:di:compile et essayez de corriger toutes les erreurs survenues.

essayez de déterminer lesquels de vos modules personnalisés utilisent la commande de console

essayez de désactiver les injections une par une jusqu'à ce que l'exception disparaisse (vérifiez par l'exécution bin/magento)

Vous avez trouvé un modèle problématique ? Génial. Allez au prochain maillon de notre chaîne et faites p.2 jusqu'à ce que vous trouviez le modèle de base, puis allez à la solution.

Lorsque vous avez trouvé l'injection à l'origine de cette exception (il s'agit généralement d'un modèle), utilisez plutôt la Factory de ce modèle et créez le modèle via la méthode Factory ->create() APRÈS le $state->setAreaCode(smth) (ci-dessous un exemple) . Bien sûr, vous pouvez simplement le faire avec le premier modèle de la chaîne (Importer le modèle dans mon cas):

mais ce n'est pas bon, car cette erreur peut apparaître non seulement dans la console.

J'ai donc trouvé le dernier modèle de la chaîne, et mon correctif ressemble à ça :

Cette réponse ne prétend pas être correcte, mais c'est ce à quoi mon enquête m'a conduit.


4 réponses 4

puisque vous avez fait un make altinstall pour installer python2.7, vous n'aurez pas de package python-devel à installer, vous aurez donc besoin de mod_wsgi pour faire référence à python approprié.

Démarrage de httpd : httpd : erreur de syntaxe à la ligne 221 de /etc/httpd/conf/httpd.conf : erreur de syntaxe à la ligne 2 de /etc/httpd/conf.d/wsgi.conf : impossible de charger /opt/mod_wsgi2.7/ usr/lib64/httpd/modules/mod_wsgi.so dans le serveur : libpython2.7.so.1.0 : impossible d'ouvrir le fichier d'objet partagé : aucun fichier ou répertoire de ce type

Parce que nous n'utilisons pas le même python et que nous n'avons lié le module à aucune option particulière pour le faire apparaître au bon endroit, il ne peut pas trouver libpython2.7.so.1.0 , nous pouvons changer cela en faisant en sorte que libtool vérifie le bon endroit.

Démarrage de httpd : httpd : erreur de syntaxe à la ligne 221 de /etc/httpd/conf/httpd.conf : erreur de syntaxe à la ligne 2 de /etc/httpd/conf.d/wsgi.conf : impossible de charger /opt/mod_wsgi2.7/ usr/lib64/httpd/modules/mod_wsgi.so dans le serveur : /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so : impossible d'ouvrir le fichier d'objet partagé : autorisation refusée

Cette dernière erreur est due au fait que mon système exécute selinux et que le fichier a le contexte par défaut. Un rapide coup d'œil à stackoverflow me dit qu'il s'agit d'un problème selinux.