当前位置: 首页 > 面试题库 >

如何阻止py2exe中编译的Python程序显示ImportError:No Module names'ctypes'

逑俊楚
2023-03-14
问题内容

我想知道这是否可能是编译错误,或者是否有什么办法可以阻止它显示。我为cmd做了一个argparse程序。我用py2exe编译了它,当我运行它时,它会正确执行该程序,但在运行代码之前始终会出现此错误:

Traceback (most recent call last):
  File "boot_common.py", line 46, in <module>
ImportError: No module named 'ctypes'

如果这是我的代码中的内容,则这是我的脚本:

import argparse
import zipfile
import os
from contextlib import closing

def parse_args():
    parser = argparse.ArgumentParser('ziputil '+\
    '-m <mode> -f <file> -p <output>')
    parser.add_argument('-f', action="store", dest='files', type=str,
                        help='-f <file> : Specify the files to be zipped, or the .zip to be unzipped.')
    parser.add_argument('-m', action="store", dest='mode', type=str,
                        help='-m <mode> : Zip to zip files, UnZip, to unzip files, or     ZipDir to zip entire directories.')
    parser.add_argument('-p', action="store", dest='path', type=str, nargs='?',     const=os.getcwd(),
                        help='-p <path> : specify the path to unpack/pack to.')


    return vars(parser.parse_args())

def unzipPackage(path, files):
    with zipfile.ZipFile(files, "r") as z:
        z.extractall(path)

def zipPackage(path, files):
    files = files.split(', ')
    zf = zipfile.ZipFile(path, mode='w')
    try:
        for file in files:
            zf.write(file)
    finally:
        zf.close()

def zipdir(path, zip):
    for root, dirs, files in os.walk(path):
        for file in files:
            zip.write(os.path.join(root, file))



dict = parse_args()
files = dict['files']
path = dict['path']
mode = dict['mode']

if mode == 'Zip':
    zipPackage(path, files)
elif mode == 'UnZip':
    unzipPackage(path, files)
elif mode == 'ZipDir':
    zipf = zipfile.ZipFile(path, 'w')
    zipdir(files, zipf)
    zipf.close()

问题答案:

这是由py2exe中的错误引起的,它将在下一个版本中修复。更多信息

该解决方案是添加ctypesbootstrap_modulesC:\Python34\Lib\site- packages\py2exe\runtime.py文件(行117)。

...
# modules which are always needed
bootstrap_modules = {
    # Needed for Python itself:
    "ctypes",
    "codecs",
    "io",
    "encodings.*",
    }
...


 类似资料:
  • 问题内容: 我正在尝试通过py2exe创建一个exe。该程序正在使用Tkinter显示类似弹出窗口的窗口。问题是,当我像这样运行安装程序时,一切正常: 但是当我尝试制作一个文件的exe时失败: 实际上,最终exe可以正常运行,但是不会显示任何窗口。我已经阅读过Windows 7上的bundle_files = 1可能存在问题,但我也尝试了bundle_files = 2来达到同样的效果。这是我的m

  • 问题内容: 我正在尝试让我的Selenium应用程序正常工作。它可以编译所有内容,但是当我打开应用程序时,它会显示以下内容: 我正在使用py2exe进行捆绑,并使用Firefox作为我的浏览器驱动程序。 Setup.py: 问题答案: 您必须从C:\ Python27 \ Lib \ site-packages \ selenium \ webdriver \ firefox手动将webdrive

  • 我目前正在从头开始创建一个 GUI,我在一个页面上包含多个类。不幸的是,有些东西阻止了我看到课程,我认为这与左括号和右括号有关。任何人都可以帮助我解决我出错的地方,所以我以后不要这样做吗?我的程序在 RentalPanel 类中抛出异常。由于某种原因,它没有看到它。 块引用

  • 问题内容: 我知道这似乎是一个荒谬的问题,但是我必须在与部门中其他人共享的计算服务器上定期运行作业,当我开始10个作业时,我真的希望它只占用10个核心而不是更多; 我不在乎每次运行一个内核所需的时间是否更长:我只是不想让它侵占其他人的领土,这将需要我放弃工作等等。我只想拥有10个坚实的核心,仅此而已。 更具体地说,我在基于Python 2.7.3和numpy 1.6.1的Redhat上使用Enth

  • 我想知道如何在Android Studio中显示编译错误。我试了下面这个: