Python py2exe-无系统模块';pywintypes';

Python py2exe-无系统模块';pywintypes';,python,windows,py2exe,pywin32,anaconda,Python,Windows,Py2exe,Pywin32,Anaconda,我正在尝试将一个简单的Python脚本转换为Windows可执行文件。我的setup.py脚本是: from distutils.core import setup import py2exe setup( name = "Simple Script", options = { "py2exe": { "dll_excludes" : ["libmmd.dll","libifcoremd.dll","libiomp5md.dll","li

我正在尝试将一个简单的Python脚本转换为Windows可执行文件。我的setup.py脚本是:

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,因为它们中的每一个都导致了故障。现在我遇到了一个我无法排除的失败。这是错误跟踪:

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)
回溯(最近一次呼叫最后一次):
文件“setup.py”,第12行,在
控制台=['rules signed.py']
文件“C:\Anaconda\lib\distutils\core.py”,第152行,在安装程序中
dist.run_命令()
文件“C:\Anaconda\lib\distutils\dist.py”,第953行,在run\u命令中
self.run_命令(cmd)
文件“C:\Anaconda\lib\distutils\dist.py”,第972行,在run_命令中
cmd_obj.run()
文件“C:\Anaconda\lib\site packages\py2exe\build\u exe.py”,第243行,正在运行
self._run()
文件“C:\Anaconda\lib\site packages\py2exe\build\u exe.py”,第306行,正在运行
self.plat_finalize(mf.modules、py_文件、扩展名、DLL)
文件“C:\Anaconda\lib\site packages\py2exe\build\u exe.py”,第1157行,在plat\u finalize中
进口蟒蛇
文件“C:\Anaconda\lib\site packages\pythoncom.py”,第2行,在
导入pywintypes
文件“C:\Anaconda\lib\site packages\win32\lib\pywintypes.py”,第124行,在
__导入pywin32系统模块(“pywintypes”,globals())
文件“C:\Anaconda\lib\site packages\win32\lib\pywintypes.py”,第98行,在uu导入u pywin32_系统u模块中__
引发导入错误(“没有系统模块“%s”(%s)”%(modname,filename))
ImportError:没有系统模块“pywintypes”(pywintypes27.dll)
我已安装pywin32并尝试在安装选项中排除“pywintypes27.dll”、“pywintypes”、“pywin”、“pywin.debugger”,但未成功。还尝试应用我在SO上找到的所有其他解决方案,例如将“pythoncom27.dll”、“pythoncomloader27.dll”和“pywintypes27.dll”移动到顶级目录


没有任何东西可以消除“导入错误:没有系统模块‘pywintypes’(pywintypes27.dll)”问题

这里是我日常使用的一段代码片段,用于将console python应用程序打包为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”的内容。它引用了一些特殊的第三方库吗?

我最近安装了Anaconda,部分原因是我需要win32com软件包,不想排除dll文件。然而,我也有同样的问题

解决方案是复制DLL文件:
pywintypes27.dll
pythoncom27.dll
坐在:
C:\Anaconda\Lib\site packages\win32

C:\Anaconda\Lib\site packages\win32\Lib

因为查找这些文件的函数在那里查找,但不在上面的目录中。源文件pywintypes.py中的大量注释表明,这方面存在问题,可能是由于安装过程不同。
我在Anaconda问题跟踪器上发布了一个问题。

我遇到了另一个问题,py2exe未能找到pywintypes27.dll-它未能在build_exe.isSystemDLL中找到文件。解决方案是在路径中添加DLL的位置(至少黑客会这样做):


这里有一个类似的问题:。我看到您使用了Anaconda,我认为这是Anaconda和python解释器的问题

本质上,当使用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)
这应该行得通。您应该通过
--
将要传递给脚本的参数与命令分开,否则IPython可能会尝试对其进行解析,例如使用:

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

在修复此问题之前,请尝试此方法。

尝试使用pywin32时,这里也存在相同的问题。可能是与蟒蛇有关,所以我添加了这个标签。也许anaconda邮件列表会是一个更好的问这个问题的地方(不幸的是,他们没有使用stackoverflow或gihub上的问题跟踪程序来处理此类问题/bug)。anaconda-1.7.0-Windows-x86_64.exe和py2exe-0.6.10dev.win-amd64-py2.7.exe对我来说很好。试着切换到PyInstaller。这很好。这对我来说很有用,但是相关的dll在Anaconda Python 3.4上的
C:\Users\Bob\AppData\Local\Continuum\Anaconda\Lib\site packages\win32\Lib
中,文件是pywintypes34.dll和pythoncom34.dll,我在[my Anaconda folder]\Lib\site packages\pywin32\u system32]中找到了它们。我想让py2exe在python3上工作。。。
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'>
C:\...\User> ipython setup.py
C:\...\User> ipython setup.py -- arg1 arg2