Mehr

Ein aus ModelBuilder exportiertes Python-Skript kann nicht ausgeführt werden


Ich habe ein Modell, das eine einzelne F.C-Form-SDE-Geodatabase in eine Scratch-Geodatabase kopiert und sie dann mit einem neuen Namen wieder in dieselbe SDE-Geodatabase zurückkopiert. Und das funktioniert perfekt vom Modell. Jetzt habe ich das Modell in ein Python-Skript exportiert, aber leider funktioniert es nicht und ich habe nicht herausgefunden, was das Problem ist.

Hier ist der Ergebnis-Python-Code

# Arcpy-Modul importieren import arcpy # Lokale Variablen: Points_DBO_Communities = "Datenbankverbindungen1.sdePoints.DBO.Communities" Buildings_POINTS_Select = "C:UsersahmadsDocumentsArcGISDefault.gdb Buildings_POINTS_Select" Points_DBO_Buildings_POINTS1 = "Datenbankverbindungen1.sdePoints.DBO.Buildings_POINTS1" # Prozess: Auswählen arcpy.Select_analysis(Points_DBO_Communities, Buildings_POINTS_Select, "") # Prozess: Features kopieren arcpy. "", "0", "0", "0")

Jetzt versuche ich, den Code auszuführen, und ich habe diese Massage erhalten:

"arcgisscripting.ExecuteError: Fehler beim Ausführen. Parameter sind ungültig. ERROR 000732: Eingabetabelle: Datensatz C:UsersjamalnDocumentsArcGISDefault.gdb UrbanMasterPlans_Objection_S2 existiert nicht oder wird nicht unterstützt Ausführung fehlgeschlagen (AddField) "

Was könnte hier das Problem sein?


Sie führen Ihr Modell über ArcMap aus, das den Ordner "Datenbankverbindungen" im Fenster "Katalog" kennt. Wenn Sie Ihren Code jedoch in einer externen Python-Datei ausführen, kann arcpy die Datenbankverbindungen nicht finden. Sie müssen die .sde-Verbindungsdatei bereitstellen, die irgendwo auf Ihrer Festplatte gespeichert ist.

Ich empfehle immer, auch in Modellen eine .sde-Datei zu verwenden. Sie finden die Verbindungsdateien unter C:Users\%user%AppDataRoamingESRIDesktop10.3ArcCatalog und kopieren sie dann woanders hin.

Ich sehe auch, dass beim Versuch, eine vorhandene Feature-Class zu überschreiben, eine Fehlermeldung angezeigt wird. Du kannst wennarcpy.Exists()Logik, um zu prüfen, ob das Objekt existiert, und es zuerst zu löschen. Verwenden Sie andernfalls diearcpy.env.overwriteOutput = True.


Python-is-python3-Paket in Ubuntu 20.04 - was ist das und was macht es eigentlich?

Nachdem ich Ubuntu 18.04 nun seit einigen Jahren verwendet und gelesen habe, dass Python 2 aus Ubuntu 20.04 entfernt wurde, freute ich mich darauf, die Befehle python oder pip anstelle von python3 oder pip3 zu verwenden. Heute habe ich Ubuntu 20.04 zum ersten Mal ausprobiert und festgestellt:

Ich war überrascht und als ich die Dinge weiter untersuchte, fand ich Folgendes über das Paket python-is-python3 :

Die Mitte dieser 3 Links ist am aussagekräftigsten, aber keiner ist besonders klar darüber, was python-is-python3 ist/macht und welche Auswirkungen es hat, wenn sudo apt-get install python-is-python3 auf einem Ubuntu ausgeführt werden soll 20.04 installieren.

Hier sind einige Fragen, die ich zu python-is-python3 habe:

Ist python-is-python3 proprietär für Ubuntu/Canonical? Wenn ja, verwenden andere Linux-Distributionen auch python-is-python3 oder haben einige andere Distributionen ein ähnliches Äquivalent?

Ich nehme an, wenn ich python-is-python3 über die Eingabeaufforderung ausführen sollte, könnte ich den Befehl python anstelle von python3 verwenden. Kann das erstens jemand bestätigen und zweitens gilt das gleiche für pip , also pip statt pip3 ?

Der obige Link launchpad.net erwähnt die Erstellung eines Symlinks. Erstellt python-is-python3 wirklich nur einen einzigen symbolischen Link? Es erscheint seltsam, ein Paket für solch einen bloßen Zweck vorzustellen. Wenn dieses Paket anschließend deinstalliert wird (z. B. sudo apt --purge remove python-is-python3), wird dadurch der Symlink entfernt?

Gibt es da draußen noch gängige Python 2-Pakete? Mir fällt nichts spontan ein.

Hat jemand python-is-python3 ausgeführt und es später aus einem Grund, der nicht im Voraus erkannt wurde, bereut?

Es scheint, dass der Vorteil der Ausführung von python-is-python3 darin besteht, die 3 nicht am Ende von Python-Befehlen hinzufügen zu müssen, aber der Nachteil ist, dass Sie dann ein nicht standardmäßiges Ubuntu-Setup haben -ist-python3-Vorteil/Nachteil?


2 Antworten 2

Bevor Sie mit PowerShell ISE etwas tun können, müssen Sie sicherstellen, dass (1) Sie PowerShell ISE als Administrator ausführen und (2) die Ausführungsrichtlinie so eingestellt ist, dass Sie Skripte ausführen können.

Öffnen Sie die SharePoint-Verwaltungsshell und führen Sie sie aus

Wenn Sie RemoteSigned , Unrestricted oder Bypass erhalten, können Sie sicher fortfahren. RemoteSigned bedeutet, dass Sie keine Skripte ausführen können, die von einem anderen Server oder aus dem Internet heruntergeladen wurden, es sei denn, sie sind signiert. Wenn Sie Dateien herunterladen, die in PowerShell ISE ausgeführt werden sollen, legen Sie die Ausführungsrichtlinie wie folgt auf uneingeschränkt fest:

Wenn alles wie erwartet funktioniert, führen Sie PowerShell ISE als Administrator aus. Versuchen Sie dann, die SharePoint.PowerShell mit folgendem zu laden:

Wenn das geladen ist, versuchen Sie es mit einem anderen Befehl, z

Wenn Sie keine Fehlermeldungen erhalten, haben Sie SharePoint.PowerShell geladen. Wenn nicht, lauf

und lese die Fehlermeldungen. Kopieren Sie die erste Zeile des empfangenen Fehlers und versuchen Sie, danach zu suchen. Immer noch in Schwierigkeiten? Aktualisieren Sie Ihre Antwort mit der Fehlermeldung, und ich werde versuchen zu helfen, wenn Sie mich in einem Kommentar benachrichtigen.


Erstens, wie ddeimeke sagte, werden Aliase standardmäßig in nicht interaktiven Shells nicht erweitert.

Zweitens wird .bashrc nicht von nicht interaktiven Shells gelesen, es sei denn, Sie setzen die Umgebungsvariable BASH_ENV.

Aber vor allem: Tu das nicht! Bitte? Eines Tages werden Sie dieses Skript irgendwohin verschieben, wo die notwendigen Aliase nicht gesetzt sind, und es wird wieder kaputt gehen.

Legen Sie stattdessen Variablen als Verknüpfungen in Ihrem Skript fest und verwenden Sie sie:

Wenn Sie in die Bash-Manpage schauen, finden Sie:

Aliase werden nicht erweitert, wenn die Shell nicht interaktiv ist, es sei denn, die Shell-Option expand_aliases wird mit shopt gesetzt (siehe die Beschreibung von shopt unter SHELL BUILTIN COMMANDS unten).

Stellen Sie sicher, dass Sie Ihre Aliase-Datei beziehen, nachdem Sie dies in Ihrem Skript festgelegt haben.

/.bash_aliases funktioniert bei mir perfekt. Oft gibt es in .bashrc eine Form der interaktiven Shell-Erkennung wie diese: # Wenn Sie nicht interaktiv laufen, tun Sie nichts [ -z "$PS1" ] && geben Sie @Zaid zurück . &ndash Frank Schubert 4. April '13 um 1:46

/.bash_aliases können von anderen Dingen abhängen, die zuvor in eine interaktive Shell geladen wurden. Das nächste, was ich gefunden habe, ist, Ihren Hashbang in #!/bin/bash -li zu ändern Immer noch nicht perfekt. Idealerweise sollten Sie Funktionen und keine Aliase verwenden. &ndash Stefanos Kalantzis 5. Februar '16 um 11:47

Aliase können nicht exportiert werden, sodass sie in Shell-Skripten, in denen sie nicht definiert sind, nicht verfügbar sind. Mit anderen Worten, wenn Sie sie in . definieren

/.bashrc sind sie für your_script.sh nicht verfügbar (es sei denn, Sie sourcen

/.bashrc im Skript, was ich nicht empfehlen würde, aber es gibt Möglichkeiten, dies richtig zu tun).

Funktionen können jedoch exportiert werden und wären für Shell-Skripte verfügbar, die in einer Umgebung ausgeführt werden, in der sie definiert sind. Dies können Sie tun, indem Sie dies in Ihre Bashrc einfügen:

Wie das Bash-Handbuch sagt: "Für fast jeden Zweck werden Shell-Funktionen Aliasen vorgezogen."


Verwenden Sie stattdessen den richtigen Pfad, in dem Python installiert ist, zum Beispiel:

Wenn Sie auf Ihrem System eine Unix-ähnliche Pfadunterstützung haben (mit MSYS kenne ich mich nicht aus), können Sie jederzeit den Pfad zu Ihrer ausführbaren Python-Datei eingeben, d. h. die Ausgabe von welcher python .

Sie könnten an einem Python Launcher für Windows interessiert sein

Es stellte sich heraus, dass die Datei Activate.sh von Virtualenv nicht mit MSYSGIT übereinstimmt. Es war nie für Windows gedacht.

Was passiert beim Ausführen (aus der Shell):

Wenn es eine interaktive Python-Sitzung startet, kann Python gefunden werden. (Sie können auch einfach ausführen: Geben Sie python ein). Wenn "keine solche Datei oder kein solches Verzeichnis" ausgegeben wird, wird Python in Ihrem PATH nicht gefunden. Überprüfen Sie, ob Folgendes optimiert werden kann, um das Problem zu beheben (Leerzeichen im Pfad/zu/Python werden wahrscheinlich Probleme verursachen):

Die neuesten Versionen von Windows 10 unterstützen die Installation von Linux-Subsystemen. Wenn Sie von dort aus laufen, sollten die Pfade korrekt sein.

Es sollte eine funktionierende Lösung sein, wenn Sie damit einverstanden sind.

Die Wurzel des Problems ist, dass Leerzeichen in Shebangs als zusätzliche Argumente für eine ausführbare Datei interpretiert werden, sodass C:ProgrammePythonpython.exe als C:Programme gegebene DateienPythonpython.exe als Argument angesehen wird .

Die beste Lösung dafür, weil Windows Leerzeichen im $HOME-Verzeichnis und in Programmdateien und anderen Orten liebt, obwohl es wirklich Dinge in cmd.exe und Powershell und anderen Tools kaputt machen kann, ist:

Installieren Sie Python in C:Python und fügen Sie den Ordner C:Python, in dem sich python.exe befindet, und das darin enthaltene Scripts-Verzeichnis zu Ihrer PATH-Umgebungsvariablen auf System- oder Benutzerebene hinzu.

Wenn Python 2.7.x und 3.x nebeneinander existieren müssen, installieren Sie sie in C:Python27 und C:Python36 und C:Python37 und benennen Sie die python.exe in python2.exe , python36.exe , python37 um. exe usw. und fügen Sie jeden dieser Ordner und ihre Skriptordner in den PATH ein. Möglicherweise möchten Sie festlegen, welche der Python 3-Versionen die "Standardversion" sein sollen, und in diesem Ordner auch eine Kopie als python3.exe erstellen, um alle Skripte zu verarbeiten, die !#/usr/bin/env python3 verwenden.

Wenn das Home-Verzeichnis Ihres Benutzers ein Leerzeichen enthält, können auch Probleme auftreten, wenn Sie die Syntax pip install --user somepackage verwenden. Der --user ist standardmäßig Ihr Home-Verzeichnis, und der Speicherplatz wird auch in diesem Fall zu Problemen führen. Die Problemumgehung wird hier beschrieben, läuft jedoch darauf hinaus, PYTHONUSERBASE in Ihre Umgebung zu exportieren.


8 Antworten 8

Der Hauptunterschied zwischen der Verwendung in den Begriffen "Drehbuch" und "Skript" ist die Funktion des Dokuments.

Das Drehbuch, das die Schauspieler während der Dreharbeiten verwenden, enthält hauptsächlich Dialoge mit minimaler Regie. Dies ist vergleichbar mit den 'Spezifikationsskripten', die Agenten und Produzenten gegeben werden, um Interesse an der Arbeit zu wecken. Der Schwerpunkt liegt hier auf dem Erzählen der Geschichte, dem Wort und den Handlungen, die die Botschaft vermitteln. Welche Soundeffekte oder Lichteffekte für die Leistung des Schauspielers wichtig sind, werden notiert. Aber alles, was sich nicht direkt auf die Leistung auswirkt, wird in der Regel weggelassen.

Das Drehbuch ist die zusätzliche Ebene mit allem, was im Drehbuch weggelassen wurde. Es kann in den meisten Fällen sehr wohl das Drehbuch sein, das weniger das Werkzeug des Schauspielers als das des Regisseurs ist. Das Drehbuch beinhaltet die Aspekte des Filmens, die außerhalb des Verantwortungsbereichs des Schauspielers liegen, Dinge wie Kamerawinkel und Anweisungen zum Schneiden oder Ausblenden, Effekte, die das Publikum sieht, aber keinen Einfluss auf die Leistung des Schauspielers am Set hat.

Der Grund, warum das Wort „Drehbuch“ im Live-Theater nicht viel verwendet wird, liegt darin, dass es keine speziellen Anweisungen für die Produktion der Arbeit auf einer Leinwand oder in einem Filmmedium gibt. Die Performance auf der Bühne ist die gesamte Performance. Es gibt keine Kamerawinkel oder Bearbeitungsräume. Es gibt nichts, was dem Drehbuch hinzugefügt werden muss, damit die endgültige Aufführung für das Publikum funktioniert. Ein Drehbuch ist etwas, das praktisch nur in einem Filmmedium einen Wert hat.


So habe ich es vor vielen Jahren gemacht, das ist das Skript-Update für Yosemite 10.11.5 - aber ich habe es nicht getestet.

Ein Skript, das jedes Element im Schlüsselbund als Text speichert:

Ein zweites AppleScript-Element, das auf die Schaltfläche "Allow" klickt, die das erste Skript beim Auslesen des Elements aus dem KeyChain auslöst.

[Bearbeiten: Juli 2016] Dies wurde auf 10.11.5 aktualisiert, da einige berichtet haben, dass sie ihren Mac mit der Verzögerung von 0,2 gesperrt haben. Ich habe das Skript darauf beschränkt, nur 200 Ergebnisse gleichzeitig zu verarbeiten. Wenn Sie also 1050 Schlüsselbundelemente haben , müssen Sie dieses Skript 6 Mal im ScriptEditor ausführen. Außerdem müssen Sie zulassen, dass der ScriptEditor im Abschnitt "Bedienungshilfen" in den Sicherheitseinstellungen in aktiviert wird:

Dann hat das obige Link/Yosemite-Update auch einen Ruby-Konvertierungsschritt von der Textdatei in CSV. Viel Glück!

ShreevatsaR weist in den Kommentaren darauf hin, dass diese Ruby-Konvertierung nur "Internet-Passwörter" und nicht "Anwendungs-Passwörter" umfasst. Dies liegt an dem Ziel des Skripts, die "Internet-Passwörter" in die Anwendung 1Password zu exportieren.

Und hier ist eine Stapelüberlauf-Frage und eine Antwort in die gleiche Richtung

Der System.keychain ist hier:

Damit AppleScript mit dem Dialogfeld Systemeinstellungen -> Sicherheit & Datenschutzeinstellungen -> Datenschutz-Register interagieren kann, muss bei der Accessibility Option "Script Editor.app" aktiviert sein


3 Antworten 3

Ich scheine es zum Laufen gebracht zu haben, indem ich sudo modprobe bcm2835-v4l2 in den Startabschnitt von /etc/init.d/motion platziere und #export LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so auskommentiere

Ich habe die erwähnte Antwort ausprobiert und es hat bei mir nicht ganz funktioniert. Ich habe das angehängt gefunden

zu /etc/modules funktionierte wie ein Zauber. Natürlich ist der auskommentierte Teil nicht notwendig, aber ich mag es immer, Kontext zu haben, wenn ich etwas noch einmal durchgehen muss.

Wenn die Kamera vorher einwandfrei funktionierte, dann aber plötzlich nicht mehr funktionierte und einen grauen Bildschirm anzeigt (z. B. in Bewegung), kann ein möglicher Grund darin bestehen, dass Sie raspi-config und darunter verwendet haben Erweiterte Optionen > Speicheraufteilung einen niedrigeren Wert als 128 MB eingestellt haben.


2 Antworten 2

Ich verwende die Quellversion und hatte noch nie Probleme - hier ist die Kurzversion der Installation für die Quelldistribution.

initdb initialisiert die Serverinstanz nach der Installation (eine Installation von einem rpm oder apt-get kann dies für Sie erledigen).

Sollte den Server für Sie starten - ich verwende im Allgemeinen die Option pg_ctl. (Wenn Sie initdb ausführen, sollten Sie die obigen Befehle als Hinweis zum Starten des Servers sehen - aber auch hier müssen Sie möglicherweise nicht initdb ausführen).


Und um eine zu entfernen Eintrag, platziere ein Minus "-" nach dem = char so:

Hinweis: Dies sind nur Beispieltasten. Sie werden nicht wirklich funktionieren.

Ich würde vermeiden, ein anderes Skript als Sie zu verwenden können tun Sie dies in einer .cmd-Datei mit den REG-Befehlen.

Sie können etwas Ähnliches tun:

Wenn Sie nur bestimmte Einträge löschen möchten, sollten Sie nach dem Pfad zum Schlüssel ein /v-Argument "EntryName" hinzufügen. Z.B:

Beides führt dazu, dass eine Warnung ausgegeben wird, bevor die Werte gelöscht werden. Um dies zu vermeiden, sollten Sie das Argument /f am Ende verwenden.

Ich verwende die folgende Methode. Dies ist Teil eines MRU-Rippers für Windows XP, der möglicherweise hilfreich ist. Dies ist der Text einer Batchdatei, die von CMD oder einer Verknüpfung ausgeführt wird. Es erstellt eine Registrierungsdatei mit einfachen Echo-Umleitungen und importiert sie dann.

Ich bin kein Programmierer, ich mache nur einige Batch-Sachen für mich selbst, daher kann ich oft nicht einmal lesen, was ich geschrieben habe, aber ich würde das als Vorlage für etwas anderes verwenden.

Die Echos werden in eine Datei umgeleitet ( > ), wobei das einzelne > für die erste Umleitung und >> an dieselbe Datei angehängt wird. Das - Zeichen wird verwendet, um einen Registrierungseintrag zu entfernen. Es wäre wahrscheinlich gut, die letzte Zeile wegzulassen und die erstellte Datei vor dem Importieren anzuzeigen. Das Importieren kann im Hintergrund erfolgen, aber ich werde das nicht selbst tun.

Haftungsausschluss: Da eine Person durch das Entfernen von Registrierungseinträgen dem System ernsthaften Schaden zufügen kann, ist eine Datenträgerabbildsicherung erforderlich, die das System zurückgeben kann, wenn das System ausfällt.

Richtige Berechtigungen, Erhöhungen und einige Einträge in der Registrierung ermöglichen dem Benutzer nicht nur, sie aufgrund ihrer Bedeutung zu löschen, ohne die Berechtigungen festzulegen.