Çeşitli komutları çalıştırmak için os.system
kullanan bir Python programım var. (subprocess
, Python 2.0'a kadar geriye doğru uyumlu olması gerektiğinden kullanılamaz.)Baskı "X.dll dosyası eksik olduğundan program başlatılamıyor" hata iletisi
Windows'ta, bazen komutlar olağandışı bir dizinde DLL'lere başvurur ve bu nedenle de "Program olabilir" t çünkü X.dll eksik "hata açılır.
Sorum komutu bütün dll bulmak yapmak hakkında değil olduğunu. Bunu nasıl yapacağımı zaten biliyorum. Bilmek istediğim, bir DLL eksik olduğunda bu iletişim kutusunu göstermemesi için Windows 'a nasıl söylerim? Bunun yerine, alt işlem hata iletisini (os.system
çağrısı içinde bir dosyaya yönlendirilen) stderr'e yazmalı ve başarısız bir şekilde çıkmalıdır (bir hata kodunu döndürmek için os.system
'a neden olmak). Bu şekilde programım hatayı yakalayabilir ve birileri Tamam'a tıklamak için gelene kadar askıya almak yerine kendi yolunda rapor edebilir.
MSDN normalde arkadaşım, ancak bu sefer hiçbir şey elde etmemekle birlikte, eksik olan özel DLL'lerle nasıl başa çıkılacağı konusunda tavsiyem var.
Yinelemek gerekirse, bu bir aşırı-geriye dönük uyumluluk durumudur: Python 2.7 ya da herhangi bir eski sürümde 2.0'a kadar tümüyle çalışan bir çözüme ihtiyacım var. Ayrıca Windows'un tüm popüler sürümlerinde de çalışmalıdır (XP, Vista, 7, 8). Daha büyük numaralı Windows ile çalışmak oldukça istenir, ancak% 100 gerekli değildir. Ayrıca, başka bir dilde yazılmış üçüncü taraf modüller ve yardımcı programlar bir seçenek değildir. (Bir .BAT
dosyasının doğru olacağını varsayalım, eğer bunu yapmanın tek yolu buysa.)
Biraz açıklayabilir misiniz? Python içermeyen bu makinede cl.exe'yi çalıştırırsanız, bu aynı hata olur mu? – Krets
Seçtiğim birkaç 'PATH' ayarından hangisine bağlı olarak olabilir veya olmayabilir. * Ama bu sorunun amacı değil. * Ben zaten 'PATH' nasıl ayarlanacağını biliyorum. Soru, bu bant dışı iletişim kutusu yerine programıma bildirilecek * hatanın * nasıl alınacağıdır. – zwol