冰冻Python皮Scipy:无法导入非线性名称

xdnvmnnf  于 2022-11-10  发布在  Python
关注(0)|答案(3)|浏览(125)

我正在使用cx_freeze、Python3和来自lfd.uci.edu的Scipy安装创建一个Windows EXE。在运行该EXE时,我收到以下错误:ImportError: cannot import name nonlin .
此引用的Scipy文件行位于站点包\scipy\optimize_root.py中:from . import nonlin .
我可以用Python加载一个控制台,并成功运行import scipy.optimize.nonlin。将scipy.optimize.nonlin添加到我的setup.py include中并不能解决这个问题。
nonlin.py 位于我的scipy安装中的optimize目录下,它的相应位置作为编译后的文件在cx_freeze生成的库文件中。

pw136qt2

pw136qt21#

我也遇到了同样的问题,但是nonlin是在“/scipy/optimize/init.py”文件中导入的。它被标记为“# Deprecated namespaces,to be removed in v2.0.0”。你可以在文件中注解字符串,在那里导入nonlin。它对我很有效。

vaj7vani

vaj7vani2#

我之所以支持这个帖子,是因为最近我的一个朋友在这个问题上寻求帮助。
鉴于此,以下是相同的解决方案方法:Circular dependency while executing cx_Freeze result
在安装脚本中,只需添加以下程序包失败引用:

packages = ["scipy.optimize", "scipy.integrate", ...]
scyqe7ek

scyqe7ek3#

我在使用cx_Freeze和Scipy时遇到了很多问题。我发现唯一有效的方法是将缺少的模块添加到“include”选项中,或者手动将所需的文件添加到“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")}

相关问题