2013-10-09 12 views
10

मैं एक साधारण पायथन स्क्रिप्ट को विंडोज निष्पादन योग्य में बदलने की कोशिश कर रहा हूं। मेरे setup.py स्क्रिप्ट है:py2exe - कोई सिस्टम मॉड्यूल 'pywintypes'

from distutils.core import setup 
import py2exe 

setup(
    name = "Simple Script", 
    options = { 
     "py2exe": { 
      "dll_excludes" : ["libmmd.dll","libifcoremd.dll","libiomp5md.dll","libzmq.dll"] 
     } 
    }, 
    console=['simple_script.py'] 
) 

मैं dll_excludes जोड़ लिया है के रूप में उनमें से हर एक एक विफलता का कारण बना। अब मैंने एक विफलता मारा है कि मैं बस exlude नहीं कर सकता। यह त्रुटि का पता लगाने है:

Traceback (most recent call last): 
    File "setup.py", line 12, in <module> 
    console=['rules signed.py'] 
    File "C:\Anaconda\lib\distutils\core.py", line 152, in setup 
    dist.run_commands() 
    File "C:\Anaconda\lib\distutils\dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "C:\Anaconda\lib\distutils\dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 243, in run 
    self._run() 
    File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 306, in _run 
    self.plat_finalize(mf.modules, py_files, extensions, dlls) 
    File "C:\Anaconda\lib\site-packages\py2exe\build_exe.py", line 1157, in plat_finalize 
    import pythoncom 
    File "C:\Anaconda\lib\site-packages\pythoncom.py", line 2, in <module> 
    import pywintypes 
    File "C:\Anaconda\lib\site-packages\win32\lib\pywintypes.py", line 124, in <module> 
    __import_pywin32_system_module__("pywintypes", globals()) 
    File "C:\Anaconda\lib\site-packages\win32\lib\pywintypes.py", line 98, in __import_pywin32_system_module__ 
    raise ImportError("No system module '%s' (%s)" % (modname, filename)) 
ImportError: No system module 'pywintypes' (pywintypes27.dll) 

मैं pywin32 स्थापित किया है और "pywintypes27.dll" को छोड़कर की कोशिश की है, "pywintypes", "pywin", "pywin.debugger" मेरे सेटअप विकल्प में, कोई सफलता के साथ। एसओ पर मिले अन्य सभी समाधानों को लागू करने का भी प्रयास किया, जैसे "pythoncom27.dll", "pythoncomloader27.dll", और "pywintypes27.dll" को शीर्ष स्तर निर्देशिका में ले जाना।

कुछ नहीं "ImportError: नहीं सिस्टम मॉड्यूल 'pywintypes' (pywintypes27.dll)" समाप्त हो गया है समस्या

+0

pywin32 का उपयोग करने का प्रयास करते समय, यहां एक ही समस्या है। शायद यह एनाकोंडा से संबंधित है, इसलिए मैं यह टैग जोड़ता हूं। शायद एनाकोंडा मेलिंग सूची यह पूछने के लिए एक बेहतर जगह होगी (दुर्भाग्यवश वे ऐसे प्रश्न/बग के लिए gihub पर स्टैक ओवरफ्लो या एक समस्या ट्रैकर का उपयोग नहीं करते हैं)। – bmu

+1

एनाकोंडा-1.7.0-विंडोज-x86_64.exe और py2exe-0.6.10dev.win-amd64-py2.7.exe के साथ मेरे लिए ठीक काम करता है। – cgohlke

+0

PyInstaller पर स्विच करने का प्रयास करें। उत्कृष्ट है। – cdonts

उत्तर

1

यहाँ exe को सांत्वना अजगर एप्लिकेशन पैकेज मेरी दैनिक उपयोग की एक कोड का टुकड़ा है। यह ठीक काम करता है।

from distutils.core import setup 
import py2exe 
from glob import glob 

data_files = [("Microsoft.VC90.CRT", 
       glob(r'C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86\Microsoft.VC90.CRT\*.*')), 
      ... other required files] 
py2exe_options={"py2exe":{"includes":[some_thing_need_to_included], 
          "dll_excludes":[some_thing_need_to_exclude]}} 
setup(data_files=data_files, 
     options=py2exe_options, 
     console=['aim_python_script.py']) 

आपको अपने 'simple_script.py' की सामग्री की जांच करनी चाहिए। क्या यह कुछ विशेष तृतीय पक्ष पुस्तकालय का संदर्भ देता है?

20

मैंने हाल ही में एनाकोंडा स्थापित किया, आंशिक रूप से क्योंकि मुझे win32com पैकेज की आवश्यकता है, और डीएलएल फाइलों को बाहर नहीं करना चाहते हैं। हालांकि, मेरे लिए एक ही समस्या है।

Solution was to copy the DLL files:
pywintypes27.dll
pythoncom27.dll
sitting in:
C:\Anaconda\Lib\site-packages\win32
to
C:\Anaconda\Lib\site-packages\win32\lib

क्योंकि उन फ़ाइलों की तलाश में फ़ंक्शन वहां दिखाई देता है लेकिन ऊपर की निर्देशिका में नहीं। स्रोत फ़ाइल में बहुत सारी टिप्पणियां pywintypes.py बताती है कि इसके साथ समस्याएं हैं, शायद अलग-अलग इंस्टॉल प्रक्रियाओं के कारण। मैंने एनाकोंडा अंक ट्रैकर here पर कोई समस्या पोस्ट की है।

+0

यह मेरे लिए काम करता था, लेकिन प्रासंगिक डीएलएल 'सी: \ उपयोगकर्ता \ बॉब \ AppData \ Local \ Continuum \ Anaconda \ Lib \ site-packages \ win32 \ lib' –

+0

एनाकोंडा पायथन 3.4 पर फ़ाइलें हैं pywintypes34.dll और pythoncom34.dll और मैंने उन्हें [मेरे एनाकोंडा फ़ोल्डर] \ Lib \ site-packages \ pywin32_system32 में पाया। मैं python3 पर काम कर रहे py2exe पाने की कोशिश कर रहा हूँ ... – flutefreak7

1

मुझे py2exe pywintypes27.dll खोजने में विफल होने के साथ एक अलग समस्या थी - यह build_exe.isSystemDLL के अंदर फ़ाइल को खोजने में विफल रहा था। समाधान रास्ते में DLLs का स्थान जोड़ने के लिए है (कम से कम हैक ऐसा करने के लिए है): https://github.com/ContinuumIO/anaconda-issues/issues/37:

import site 
for site_path in site.getsitepackages(): 
    pywin32_path = os.path.join(site_path, "pywin32_system32") 
    if os.path.isdir(pywin32_path): 
     os.environ["PATH"] = os.environ["PATH"] + ";" + pywin32_path 
1

ने वही समस्या यहाँ नहीं है। मैं देखता हूं कि आप एनाकोंडा का उपयोग करते हैं, और मुझे लगता है कि यह एनाकोंडा और पायथन दुभाषिया के साथ एक मुद्दा है।

अनिवार्य रूप से, समस्या आईपीथॉन दुभाषिया का उपयोग करते समय मौजूद नहीं है! जब IPython का उपयोग कर

C:\...\User> python 
>>>import pythoncom 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Program Files\Anaconda3\lib\site-packages\pythoncom.py", line 2, in <module> 
    import pywintypes 
    File "C:\Program Files\Anaconda3\lib\site-packages\win3\lib\pywintypes.py", line 124, in <module> 
    __import_pywin32_system_module__("pywintypes", globals()) 
    File "C:\Program Files\Anaconda3\lib\site-packages\win32\lib\pywintypes.py", line 98, in __import_pywin32_system_module__ 
raise ImportError("No system module '%s' (%s)" % (modname, filename)) 
ImportError: No system module 'pywintypes' (pywintypes34.dll) 

दूसरी ओर, कोशिश

C:\...\User> ipython 
In [1]: import pythoncom 

In [2]: pythoncom 
Out[2]: <module 'pythoncom' from 'C:\\Program Files\\Anaconda3\\lib\\site-packages\\win32\\pythoncom34.dll'> 

कोई समस्या नहीं है: उदाहरण के लिए कोशिश करो!

बेटा जब तक यह तय हो जाता है, आप के बजाय IPython दुभाषिया का उपयोग कर, जैसे आपकी परेशानी .py फ़ाइलों चला सकते हैं:

C:\...\User> ipython setup.py 

और कहा कि काम करना चाहिए। आप तर्क आप एक -- द्वारा आदेश से अपनी स्क्रिप्ट को भेजना चाहते हैं अलग चाहिए, अन्यथा IPython यह पार्स करने के लिए प्रयास कर सकते हैं, उदाहरण के लिए उपयोग:

C:\...\User> ipython setup.py -- arg1 arg2 

इस समय तक तय हो गई है, इस विधि का प्रयास करें।

संबंधित मुद्दे