Problem: Wie lösche ich alle Reste von random.py, random.pyc und random.pyo, die nicht Teil der Standardbibliothek von Python sind?

1

Ich habe einen zufälligen Importcode geschrieben und diesen leider unter dem Namen des Moduls gespeichert, den ich aufzurufen versuchte. z.B. random.py

Ich glaube, bin mir aber nicht sicher, dass ich die random.py-Datei zweimal erstellt und daher die random.pyc zweimal gelöscht habe, die in der Datei mit all meinen Python-Programmen aufgetaucht ist, nachdem import random im Terminal zweimal ausgeführt wurde.

Wenn ich die random.py nicht zweimal erstellt habe, befand sich in der Datei, die meine Programme enthielt, irgendwie eine andere random.pyc (neben der ersten), und ich habe sie gelöscht.

Alle Leute, die ich gefragt habe, haben mir gesagt, dass ich die .pyc-Datei und alle Dateien mit dem Namen random, random.pyo löschen soll. Ich habe alle von meinen Benutzern erstellten Dateien überprüft und keine davon entspricht der Beschreibung.

Einer von ihnen forderte mich auf, die temporär zwischengespeicherte Version von random.pyc und random.pyo zu finden und zu löschen.

Meine Frage ist, wo auf diesem MAC air Yosemite ich eine temporär zwischengespeicherte Version finden kann und wie ich sie sicher löschen kann.

Red
quelle
Das Verzeichnis, in dem .pyc-Dateien erstellt werden, hängt von der verwendeten Python-Version ab. Welche Version?
Mark
@ Mark Python 2.7.6
Red

Antworten:

0

benutzen mdfind um alle Dateien mit diesem Namen zu finden (müssen Sie möglicherweise grep -w für die Zeichenfolge oder verwenden mdfind mit einer "kMDItemFSName == whatever.py" -Klausel)

Sobald Sie wissen, wo Sie diese Dateien abgelegt haben, können Sie sie entweder in der Frage bearbeiten oder eine Neuinstallation / Migration der Benutzerdaten durchführen oder alle Pythons entfernen und diese dann zusammen von einer Neuinstallation auf einem externen Laufwerk patchen.

Es musste bekannt sein, welche spezifischen Dinge Sie getan haben, aber hoffentlich können einige der Tools Sie auf einige Optionen einschränken.

Wenn ich an der Deadline wäre und nur wissen müsste, welche Version von Python läuft, würde ich brew install python nach dem Einrichten https://brew.sh

Sie hätten dann drei Installationen, aber die, die von der Shell ausgeführt wird, kann mit $ PATH gesteuert werden und Sie können sicher sein, dass sie mit Homebrew auf dem neuesten Stand ist.

bmike
quelle
Ich bin wie ein paar Tage neu in Python und programmiere im Allgemeinen. Ich habe Ihre Befehle und die eines anderen Benutzers verwendet, um die ursprünglichen .py-, .pyo- und .pyc-Dateien und keine Duplikate zu finden. Mein Problem wurde gelöst, indem ich einfach zu dem Pfad ging, der zu der Datei führte, Python startete und das Modul aufrief. Ich werde mein System jedoch sofort sichern, da ich die ganze Zeit darüber nachgedacht habe, den Python auf meinem Mac zu vermasseln. Und das nächste Mal werde ich meinen Beitrag klarer machen. Vielen Dank, bmike.
Red
@ Red Super! Willkommen und ich bin froh, dass Sie Python und die Site lernen. Beantworten Sie Ihre Frage und akzeptieren Sie sie nach Ablauf der Wartezeit. Das hilft anderen, die neu sind, viel mehr als die Antwort eines "Experten", da unterschiedliche Fähigkeiten unterschiedliche Detaillierungsgrade erfordern.
bmike
Ich habs. Sollte ich diese Änderung entfernen?
Red
0

Bei Python 2.x befinden sich alle Dateien, die sich auf die von Ihnen erstellte random.py-Datei beziehen, im selben Verzeichnis wie diese Datei.

Für Python 3.4 siehe Dieser Abschnitt über kompilierte Python-Dateien der Python-Dokumente

Um das Laden von Modulen zu beschleunigen, speichert Python die kompilierte Version jedes Moduls im Cache __pycache__ Verzeichnis unter dem Namen module.version.pyc, in dem die Version das Format der kompilierten Datei codiert; Es enthält im Allgemeinen die Python-Versionsnummer. In CPython-Version 3.3 würde beispielsweise die kompilierte Version von spam.py als zwischengespeichert __pycache__/spam.cpython-33.pyc. Diese Namenskonvention ermöglicht die Koexistenz kompilierter Module aus verschiedenen Releases und verschiedenen Versionen von Python.

Mark
quelle
0

Endgültige Antwort:

Hey neue Programmierer zu Python.

Ich hatte ein Problem beim Importieren des eingebauten Moduls 'random'.

  1. Stellen Sie sicher, dass Sie Ihr Programm nicht nach dem Modul benennen.

    ein. In diesem Fall müssen Sie die neu erstellte random.pyc oder eine andere Datei löschen
    zufällig. Der Dateiname wird in der Datei dupliziert, die die random.py enthält erstellt. Dies sind GUI-Dateien, die in den Papierkorb verschoben werden können. Dieser Schritt sollte 100% Ihrer Probleme mit doppelten Dateien lösen, wenn Sie Python haben
    2.x.

    Lernen Sie, die Originaldateien zu erkennen. Aus einem Fehler meines Ich  den Pfad zum Modul in der Python-Standardbibliothek gefunden. MAC-Pfad  kurz bevor das Modul benannt wird:

    /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7

MAC Path to random module: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7

Use 'cd ..', 'ls', and 'cd' to get to python2.7 and enter 'ls' and you 
will see a lot of original files with .py, .pyo, .pyc endings. This is  
the location that they only should be in other than a similar path but 
in a different python version.)

 i. If you still think you have newly created files floating about in 
 the library use command;

      find ./python2.7 -name random.* -ls

 This will list the date of all files that start with 'random.' and   
 if there any have dates that do not match with the original 
 installation date or update dates, that is the file that is 
 causing the problem. 

 ii. You can also type this command into terminal to find   
 files but it doesn't list the time of installation;

  mdfind kMDItemFSName == random.py

 Obviously, since you know what the original file path looks like, 
 you'll be able to not target the wrong file!
  1. Wenn Sie neue Dateien entfernt haben, benennen Sie Ihr Programm anders als random.py und möglicherweise anders als in Python reservierte Wörter um. Ich habe meinen Generator angerufen

  2. Stellen Sie sicher, dass Sie sich im Terminal auf dem richtigen Pfad befinden, bevor Sie 'python' starten, und geben Sie 'import generator' (oder wie das Programm heißt) ein.

Um zum richtigen Pfad zu gelangen, verwenden Sie die Befehle 'ls' und 'cd', um zum Pfad zu gelangen, der mit der Datei endet, in der sich das Programm befindet. (Dies war der letzte Block, um den Import zum Laufen zu bringen. Ich verbrachte mindestens 6 Stunden damit, andere versteckte neu erstellte .pyc-Dateien zu haben, selbst wenn die oben durchgeführte Befehlssuche keine ergab.

Du findest dich blockiert, mach eine Pause und komm zurück. Etwas hat in meinem Kopf geklickt, nachdem ich einige Stellen online angesehen hatte, einschließlich stackflow, python.org ( https://docs.python.org/2/tutorial/modules.html ), und das alles über Pfade sprechen.

Ich war noch nie auf dem richtigen Weg, bevor ich importiert habe !!

  1. Starte 'python'

  2. Geben Sie "Import Generator" ein

Sie sollten eine Ausgabe von 10 Zahlen von 0.0 bis 1.0 erhalten

Ich antwortete, wie man neue Versionen von random.py, random.pyc und random.pyc findet. Ich habe teilweise geantwortet, wie die neuen gelöscht werden sollen, insbesondere die, die Sie manuell in den Mülleimer werfen können. Ich weiß immer noch nicht, wie ich eine temporär zwischengespeicherte Version der Dateien finden soll, denn anscheinend war das nicht das Problem! Das Problem war, dass ich meinem Programm einen schlechten Namen gegeben habe und nicht auf dem richtigen Weg war, bevor ich mit Python und dem Import begonnen habe.

Red
quelle
@ Schau dir Marks Antwort an, wo diese .pyc-Dateien auf deiner Python-Version basieren. Meine Antwort ist für Python 2.x.
Red