【问题标题】:No module named pyopencl (Py2exe)没有名为 pyopencl (Py2exe) 的模块
【发布时间】:2012-09-29 14:29:12
【问题描述】:

我在尝试从 Py2Exe 制作 .exe 时遇到了 PyOpenCL 模块的一些问题。 Py2Exe 会按照应有的方式生成 .exe(此处没有“ImportError:没有名为 pyopencl 的模块”),但是当我运行 .exe 时,它​​说没有名为 pyopencl 的模块。

我正在尝试制作 Phoenix Miner 的 .exe。

我的 setup.py:

from distutils.core import setup
import py2exe, sys, os, pyopencl

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1,
                          "includes":["pyopencl","twisted",
                                      "zope","QueueReader",
                                      "numpy"]}},
    console=[{'script' : 'phoenix.py'}],
    data_files=["C:\\Users\\Nicklas\\Desktop\\Phoenix-Miner\\kernels\\poclbm\\kernel.cl"],
    zipfile = None,
)

我发现有人和我有同样的问题http://bytes.com/topic/python/answers/848048-py2exe-module-error,但没有解决方案。

更新: 我找到了导致此错误的原因。在 pyopencl __init__ 中有一个名为 _find_pyopencl_include_path 的函数,它的作用是不言自明的。长话短说:imp 模块找不到 pyopencl 模块。为了解决这个问题,我注释掉了该行并将路径名设置为 pyopencls 包含目录的路径。可能不是一个好的修复。但这很容易解决。

【问题讨论】:

  • 回答自己的问题其实没问题。将py2exe 放在标题中,这将是一个很好的自我回答问题。

标签: python py2exe pyopencl


【解决方案1】:

我找到了导致此错误的原因。在 pyopencl __init__ 中有一个名为 _find_pyopencl_include_path 的函数,它的作用是不言自明的。长话短说:imp 模块找不到pyopencl 模块。为了解决这个问题,我注释掉了该行并将路径名设置为 pyopencls 包含目录的路径。可能不是一个好的修复。但这很容易解决。

【讨论】:

  • 感谢您的回答,今天我在发布新的 GUIMiner 时遇到了同样的问题,它为我节省了一些时间。
  • 知道什么好玩吗?看看那行下面的评论:# 谁知道 Python 安装如此统一和可预测?
【解决方案2】:

还有一个最简单的方法是使用auto-py-to-exe模块使python脚本可执行,它可以使用pip install auto-py-to-exe安装,在python命令行终端安装writeauto-py-to-exe后会出现一个窗口,选择脚本位置并选择 OneFile 而不是 OneDirectory,这里我粘贴auto-py-to-exe 窗口截图供参考 转换后将出现“打开输出文件夹”选项,您将在其中获得 Python 脚本的 .exe 文件。而且这个 .exe 文件可以在任何系统上运行,无需使用 python。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2015-02-17
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多