2009-07-17 10 views
6

के कारण नहीं चलेगा मैं कबूल करूंगा कि मैं पाइथन के लिए बहुत नया हूं और मुझे नहीं पता कि मैं अभी तक क्या कर रहा हूं। हाल ही में मैंने पायथन 2.6.2 और WxPython 2.8 का उपयोग करके एक बहुत छोटा विंडोज एप्लिकेशन बनाया है। और यह बहुत अच्छा काम करता है; मैं काफी खुश हूं कि यह सामान्य रूप से कितनी अच्छी तरह से काम करता है। सामान्य रूप से से मेरा मतलब है जब मैं इसे सीधे पायथन दुभाषिया के माध्यम से आह्वान, इस तरह:py2exe: संकलित पायथन विंडोज एप्लिकेशन डीएलएल

> python myapp.py 

हालांकि, मैं एक कदम और आगे जाने के लिए और वास्तव में एक स्टैंडअलोन निष्पादन योग्य फ़ाइल में इस संकलन करना चाहता था। इसलिए मैंने wxPython विकी से these instructions का पालन किया जो py2exe का उपयोग करता है। सबसे पहले मुझे कमांड लाइन में त्रुटियां मिलीं, कह रही है कि MSVCR90.dll गुम था। तब मैंने अपने Python \ DLLs फ़ोल्डर में MSVCR90.dll की प्रतिलिपि बनाई। इससे पहले इसे ठीक किया गया था, क्योंकि यह सफलतापूर्वक किया गया था जो इसे करने की ज़रूरत थी। यह एक त्वरित चेतावनी के साथ समाप्त हुआ कि कुछ डीएलएल फाइलें थीं जिन पर कार्यक्रम निर्भर करता है और मुझे उन्हें वितरित करने की आवश्यकता हो सकती है या नहीं।

तो मैंने उस dist फ़ोल्डर में नेविगेट किया जो py2exe ने बनाया था और मेरे निष्पादन योग्य को चलाने का प्रयास किया था।

This application failed to start because MSVCR90.dll was not found. 
Re-installing the application may fix this problem. 

तो मैं आगे चला गया और इस जिले फ़ोल्डर में फिर से msvcr90.dll की नकल की: लेकिन इसे खोलने की कोशिश कर केवल एक त्रुटि संवाद ही कहा अप पॉप। लेकिन उसने चाल नहीं की। तब मैंने इसे विंडोज़ \ system32 निर्देशिका में कॉपी किया। उसने ऐसा नहीं किया। इस काम को काम करने के लिए मुझे क्या करने की ज़रूरत है?

+1

यह एक और पूर्ण चर्चा के साथ एक और प्रश्न का डुप्लिकेट है:
एक दिन स्टैक ओवरफ्लो मुझे डुप्लिकेट के रूप में ध्वजांकित करने के लिए पर्याप्त रूप से पर्याप्त भरोसा कर सकता है। – resplin

उत्तर

8

आप बस msvcr * .dll की प्रतिलिपि नहीं बना सकते हैं - उन्हें साइड-बाय-साइड असेंबली के नियमों का उपयोग करके सेट अप करने की आवश्यकता है। आप पुनर्वितरण योग्य पैकेज को सैम पॉइंट के रूप में स्थापित करके ऐसा कर सकते हैं, या जब तक आप नियमों का पालन करते हैं तब तक आप उन्हें अपने निष्पादन योग्य के साथ रख सकते हैं।

अनुभाग "नियोजित करना विजुअल C++ निजी विधानसभाओं के रूप में पुस्तकालय DLLs" यहाँ देखें: जानकारी के लिए How to Deploy using XCopy, लेकिन मूल रूप से आपके आवेदन इस तरह दिखता है:

इस के
c:\My App\MyApp.exe 
c:\My App\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest 
c:\My App\Microsoft.VC90.CRT\msvcr90.dll 

एक लाभ यह है कि गैर व्यवस्थापक उपयोगकर्ताओं का उपयोग कर सकते है आपका ऐप (मुझे विश्वास है कि पुनर्वितरण योग्य इंस्टॉलर के माध्यम से रनटाइम को स्थापित करने के लिए आपको एक व्यवस्थापक होने की आवश्यकता है)। और किसी भी इंस्टॉलर की कोई ज़रूरत नहीं है - आप बस फाइलों को एक पीसी पर कॉपी कर सकते हैं और यह सब काम करता है।

+0

क्या यह एक Vista सुविधा है? मुझे एक समान समस्या का सामना करना पड़ा (MSVCP71.DLL ने py2exe ऐप लॉन्च करते समय लापता होने की सूचना दी) और इसे उसी निर्देशिका में डालने के रूप में .exe ने इसे ठीक किया (कम से कम XP पर) –

+1

@ लूपर: मेरा मानना ​​है कि नए नियम msvcr80 के साथ आए थे । – RichieHindle

2

मुझे विश्वास है कि Microsoft C++ Redistributable Package स्थापित करने से आपको सही ढंग से आवश्यक DLL इंस्टॉल होगा।