【问题标题】:Scipy in frozen Python: Cannot import name nonlin冷冻 Python 中的 Scipy:无法导入名称 nonlin
【发布时间】:2013-09-30 10:38:56
【问题描述】:

我正在使用 cx_freeze、Python3 和来自 lfd.uci.edu 的 Scipy 安装创建一个 Windows EXE。运行 exe 后,我收到错误:ImportError: cannot import name nonlin

这里引用的 Scipy 文件行,在 site-packages\scipy\optimize_root.py 中:from . import nonlin

我可以用 Python 加载控制台,并成功运行 import scipy.optimize.nonlin。 将 scipy.optimize.nonlin 添加到我的 setup.py 包含并不能解决问题。

nonlin.py 位于我的 scipy install 中的 optimize 目录中,其对应的位置为 cx_freeze 生成的库文件中的编译文件。

【问题讨论】:

  • 你能显示冻结它的输出吗?
  • 完整文件在这里(长):link 第 791 行:'m scipy.optimize.nonlin C:\Python33\lib\site-packages\scipy\optimize\nonlin.py' 我请注意第 1170 行附近的“复制”部分中没有 nonlin.pyd。不知道它是否应该在那里,并且该文件不在我的 Python 安装中。
  • 不,它是一个 .py 文件,而不是一个 .pyd,所以它会被复制到 zip 文件中,就像你发现的那样。我不确定,但相对导入语法可能有问题。您使用的是最新版本的 cx_Freeze 吗?希望我们很快就会有一个新版本供您试用。
  • 我使用的是 cx_Freeze 4.3.1。期待新版本。我目前正在尝试安装dev version,并与mingw战斗。
  • 希望在接下来的一两周内 - 我们需要先解决 setuptools 的问题。抱歉,AFAIK 没有人构建开发版本的二进制文件。

标签: python python-3.x import scipy cx-freeze


【解决方案1】:

我在使用 cx_Freeze 和 Scipy 时遇到了很多问题。我真正发现的唯一工作是将缺少的模块添加到“includes”选项中,或者手动将所需的文件添加到“include_files”选项中。

此链接帮助我进行插值。 https://bitbucket.org/anthony_tuininga/cx_freeze/issue/43/import-errors-when-using-cx_freeze-with

{"includes": ["scipy.special._ufuncs_cxx"],
 "include_files": [(python_exe_path+"/Lib/site-packages/scipy/sparse/sparsetools/_csr.pyd",
                    "_csr.pyd") ],
}

这对您来说不是完全相同的问题,但它可以帮助您找到所需的文件以正确包含它们。 “includes”对您不起作用,因此您可以使用“include_files”或“zip_includes”手动添加它,具体取决于它在哪里搜索您的文件。

{"zip-include": (python_exe_path+"/Lib/site-packages/scipy/optimize/nonlin.py, 
                 "scipy/optimize/nonlin.py")}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2019-10-25
    • 2016-10-08
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多