Fehlende Module nach py2exe-Lauf

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
ws
User
Beiträge: 65
Registriert: Freitag 16. Juni 2006, 13:19

Hallo,

für die Verteilung einer Applikation wollte ich py2exe benutzen. Benutzt werden unter anderem Qt und Zope. Wenn ich das ganze dann durch py2exe laufen lasse:

python setup.py py2exe

fehlen mir noch mehrere Module:

The following modules appear to be missing
['email.Iterators', 'email.Utils', 'myproxy', 'myserver', 'resource', 'testlib', 'zope.interface']

Wenn ich einfach den Interpreter starte und

import zope.interface

ausführe, funktioniert das, d.h. der Interpreter kennt und findet das Modul offensichtlich. Beim py2exe-Lauf dagegen wird es nicht gefunden. Kann mir jemand sagen, wie ich py2exe sagen kann, wo dieses Modul liegt und dass es dazu gepackt werden soll?

Desweiteren habe ich ein paar Module in einem Unterverzeichnis, die ich mit innerhalb der library.zip verteilen möchte ("myproxy", "myserver"), die aber ebenfalls nicht gefunden werden. Ich habe versucht, diese mit include hinzuzufügen:

Code: Alles auswählen

setup(
        console=['my_main.py'], 
        [code=py]includes=["sip", "pywin32", "mysubdir.myproxy"]
)
[/code]

, alternativ habe ich auch die Syntax:

Code: Alles auswählen

includes=["sip", "pywin32", os.path.join("mysubdir", "myproxy.py")]
versucht, das hat aber beides nicht funktioniert. Wie kann ich solche Unterverzeichnisse samt der enthaltenen Module hinzufügen? (Wenn jemand einen Link für py2exe-Dokumentation hat, wäre ich dafür auch sehr dankbar, mit der mitgelieferten Doku (help(py2exe) komme ich in diesem Fall nicht weiter)


Vielen Dank im Voraus

Wolfgang
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

Hi Wolfgang,

hab bei meiner Kompilierung auch so das ein oder andere Problem gehabt. Ich arbeite mit PyInstaller und hatte das Problem, dass er

Code: Alles auswählen

from wx import * 
nicht wollte. Wenn ich aber nur

Code: Alles auswählen

import wx
sage läuft mein Programm.

Daher meine Empfehlung, versuch den Import zu ändern in z.B.

Code: Alles auswählen

from email import *

Versuchs sonst mal mit PyInstaller. Auch wenn ich mit dem gerade nicht weiter komme. :roll:


Gruß
HP
noise
User
Beiträge: 62
Registriert: Donnerstag 7. Februar 2008, 00:15

Kurz: In `packages` gehören alle externen packages rein. Und du solltes auch überlegen `encodings` mit rein zu nehmen, weil es sonst Probleme mit unicode gibt wenn dein Programm mit unicode arbeitet.

Code: Alles auswählen

    setup(
        options = dict(
            py2exe = {
                'compressed': 1,
                'optimize': 2,
                'ascii': 1,
                'bundle_files': 1,
                'packages': ["pywin32", "encodings"]}
        ),
        # usw...
    )
BTW: Das importieren von packages im Programm, um nur py2exe zufriedenzustellen, ist IMO unsauber. Dafür gibt es wie gesagt `packages` und erfährt man auch wenn man mal die mitgelieferten Snippets liest und das Wiki und die Doku...
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Ich hab das gleice problem und komm nicht weiter
System win XP Pro

meine import dateien sehen so aus

Code: Alles auswählen

import  wx
import time
import parallel
import random
import wx.lib.newevent 
from wx.lib.ticker import Ticker
wie muss setup .exe aussehen damit das die pageges findet

Code: Alles auswählen

from distutils.core import setup
import py2exe

setup(options = dict(
            py2exe = {
                'compressed': 1,
                'optimize': 2,
                'ascii': 1,
                'bundle_files': 1,
                'packages': ["encodings","parallel","ctypes"]}
        ),
      windows = [{"script": "prog.py",
                  "icon_resources": [(1, "icon.ico")]}],
      
 )

so geht es jedenfals nicht
meldung modules missing paralleljava,parallelioctl

wo bekomm ich die her
der idle brauch die anscheinend nicht


danke
Antworten