2011-06-16 7 views
6

üzerinde çalıştırılamıyor 64 bit windows 7 makinede py2exe ile bir uygulama oluşturdu ve programı dağıtdı. programı aşağıdaki davranış sergileyen çalıştırmak reddeden bir windows xp 32 bit makinedeçalıştırılabilir windows xp 32bit

:

a popup window says: program.exe is not a valid win32 application.

The command prompt window says "access denied"

Ben izinleri için kontrol ve kullanıcı tam kontrol ve dosyanın tam sahipliğini ve üst dizinleri vardır. Yani sorun bu olamaz.

Görüntüleyebileceğim tek olası olanak bir OS/mimari uyumsuzluğu. Bunu nasıl düzeltmeliyim?

yürütülebilir üretmek için kullanılan My setup.py dosyası:

from distutils.core import setup 
import py2exe 

setup(console=['xerxes2excel.py']) 

Ben exe oluşturmak için aşağıdaki koştum: Ben sadece 32 bit python yüklemeniz gerekir düşünüyorum

python setup.py py2exe 
+0

32bit bir makineyi kullanarak çalıştırmayı oluşturmayı deneyin – inspectorG4dget

+0

, muhtemelen bir 32 bit işlemcisinde çalıştırılmayacak bir 64 bitlik bir yürütülebilir dosya oluşturduğunuzu söylemekten emin olmaz mıydı? –

+0

@jcomeau_ictx, bu benim varsayımım. 64bit makinede 32bit bir yürütülebilir dosya oluşturmanın bir yolu var mı? Bir çeşit öykünme büyüsü mü? –

cevap

4

Windows 7'de yürütülebilir oluşturduğunuzda ve Windows XP'de dağıttığınızda sık karşılaşılan bir sorun.

Py2exe eğitimine göre, MVC DLL dosyasını eklemeniz gerekir. Ancak öğretici eskidir ve komut dosyası yalnızca bir dizinde arama yapar. Daha önce, dizin tüm DLL ve manifest içeriyordu, ancak bugünlerde sadece DLL'yi içeriyor. Bildirim dosyası için başka bir dizin belirtmeniz gerekiyor. Windows 7'ye 64 bit üzerinde ise

this application has failed to start because the application configuration is incorrect 

, Microsoft Visual C çalışma zamanı DLL gerekir: Bunu yapmazsanız, size bu tür bir hata olacaktır. Windows 7'de aynı dizinde değil manifestosunu unutmayın Böyle senaryoyu uyarlamak gerekir:

data_files = [("VC90", glob(r'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91\*.*')), 
      ("VC90", glob(r'C:\Windows\winsxs\Manifests\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91.manifest')) 
] 
setup(
    data_files=data_files, 
    console = [{'script': "C:\test\my_program.py"}], 
    zipfile = None, 
) 

Şimdi tüm dosya ve bağımlılıkları içeriyor "dist" dizini dağıtabilir.

+0

glob import glob'den eklemelisiniz – tovmeod

İlgili konular