.py in .pyc für ubuntu-Server kompilieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
merti
User
Beiträge: 3
Registriert: Montag 13. Februar 2012, 17:40

Hallo python forum,

bitte entschuldigt die Anfängerfrage - ich bin neu in diesem Forum und neu in Python!
Ich habe ein Python-Skript verändert und möchte es von .py zu .pyc kompilieren. Das Skript soll auf einem Ubuntu-Webserver laufen. Ich habe zwar schon ein wenig über die Vorgehensweise im Web gefunden, aber trotzdem komme ich nicht weiter. Ich habe auf meinem Mac Python installiert und habe somit die Shell, IDLE und den Launcher zur Verfügung.

Ich habe gelesen, dass folgender Befehl passend ist:
import py_compile
py_compile.compile('meinmodul.py')

Wo muss ich den Befehl ausführen und wo muss die .py - Datei vorliegen?
Kann ich die auf dem Mac kompilierte Datei auf dem Webserver laufen lassen oder muss ich sie dort kompilieren?

Vielen Dank für die Unterstützung!
Thorsten
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hallo und Willkommen im Forum.


Du musst deine Python-Datei nicht kompelieren, damit sie der Webserver (apache?) ausführen kann.
the more they change the more they stay the same
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Code: Alles auswählen

import py_compile
py_compile.compile('meinmodul.py')
Einfach im gleichen Verzeichnis, wo auch die zu "kompilierenden" Scripte sind, ausführen.

Edit: kA ob es systemübergreifend geht...
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Nochmal... Du musst nix kompilieren. Das wird automatisch und im Hintergrund gemacht wenn du die besteffenden .py Dateien startest. Die entstenden Bytecode-Dateien sind dann übrigens plattformunabhängig (jedoch nicht komplett versionsunabhängig).
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Die bytecode Dateien sind zumindest abhängig vom Interpreter und der Platform. Meines Wissens ist das Format auch nicht klar definiert, dementsprechend ist davon abzuraten es für solche Zwecke zu nutzen.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Sind sie nun Plattform unabhängig oder nicht? Ihr widersprecht euch da...
deets

@DasIch

Das stimmt nicht. Zumindest pro Minor-Version (also alle 2.X) ist das stabil, und auch Plattformuebergreifend. Wir liefern zB pycs fuer Py2.5 in Mac + Win aus.
merti
User
Beiträge: 3
Registriert: Montag 13. Februar 2012, 17:40

Hallo und vielen Dank für eure Antworten!

Ich hatte bisher mit Python noch nichts zu tun, kenne mich aber gut mit PHP und Javascript aus. Das besagte Skript ist Teil eines Indizierungsdienstes. Ich möchte es an einer Stelle erweitern und hoffentlich problemlos weiterhin nutzen.

Code: Alles auswählen

import py_compile
py_compile.compile('meinmodul.py')
Diesen Befehl konnte ich auf dem Terminal nicht ausführen - wahrscheinlich muss dafür den Server konfigurieren. Aber wenn ich euch richtig verstanden habe muss ich das auch nicht machen.
In dem Verzeichnis gibt es die Datei als .py und als .pyc. Also kann ich einfach die .pyc löschen, die .py ändern und beim nächsten Aufruf wird die .pyc automatisch erzeugt?

Im Skript wird der Befehl import auch verwendet, jedoch sind die Module ohne Dateiendung angegeben. Nimmt Python automatisch eine .pyc bzw. .py - Datei?

Vielen Dank für euer Feedback!

Thorsten
BlackJack

@merti: Du kannst die *.pyc-Datei auch *nicht* löschen. Hör auf Dir Gedanken zu machen und ändere einfach die *.py-Datei. Die *.pyc's sind ein Implementierungsdetail von CPython. Wenn die *.py-Datei neuer ist, wird die genommen und übersetzt und die alte *.pyc überschrieben. Alles automatisch.
merti
User
Beiträge: 3
Registriert: Montag 13. Februar 2012, 17:40

Danke BlackJack!

Ich teste es aus - wollte mich halt erst mal informieren, da es ja ein aktives System ist, an dem ich gerade Änderungen einbinde.

Python scheint interessant zu sein - muss ich mich mal reinarbeiten.
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Nur der Vollständigkeit halber:

Code: Alles auswählen

import py_compile
py_compile.compile('meinmodul.py')
Muss im Python Interpreter ausgeführt werden. Einfach in das CLI schreiben geht natürlich nicht :P
Ergänzend zu BlackJack, die Scripte werden beim importieren zu .pyc, beim einfachen ausführen werden diese nicht kompiliert.
Antworten