gpt4 book ai didi

python - Cx_freeze ImportError 没有名为 scipy 的模块

转载 作者:太空狗 更新时间:2023-10-29 21:19:39 25 4
gpt4 key购买 nike

大家好,

我在转换为 .exe 的代码上使用 cx_Freeze 时遇到问题。

当我运行 cx_Freeze 时,我得到以下 ImportError,指出没有名为 scipy 的模块

running install
running build
running build_exe
Traceback (most recent call last):
File "setup.py", line 25, in <module>
executables = executables
File "C:\Python34\lib\site-packages\cx_Freeze\dist.py", line 362, in setup
distutils.core.setup(**attrs)
File "C:\Python34\lib\distutils\core.py", line 148, in setup
dist.run_commands()
File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Python34\lib\distutils\command\install.py", line 539, in run
self.run_command('build')
File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Python34\lib\distutils\command\build.py", line 126, in run
self.run_command(cmd_name)
File "C:\Python34\lib\distutils\cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()
File "C:\Python34\lib\site-packages\cx_Freeze\dist.py", line 232, in run
freezer.Freeze()
File "C:\Python34\lib\site-packages\cx_Freeze\freezer.py", line 619, in Freeze
self.finder = self._GetModuleFinder()
File "C:\Python34\lib\site-packages\cx_Freeze\freezer.py", line 378, in _GetModuleFinder
finder.IncludePackage(name)
File "C:\Python34\lib\site-packages\cx_Freeze\finder.py", line 686, in IncludePackage
module = self._ImportModule(name, deferredImports)
File "C:\Python34\lib\site-packages\cx_Freeze\finder.py", line 386, in _ImportModule
raise ImportError("No module named %r" % name)
ImportError: No module named 'scipy'

我可以确认我的系统上安装了 Scipy 0.16,当我将它导入其他 python 代码时它可以工作。我目前在 Windows 上运行 python 3.4。以下是我的 cx_Freeze 的 setup.py 文件。

import cx_Freeze
import sys
import matplotlib

base = None

if sys.platform == 'win32':
base = 'Win32GUI'

executables = [cx_Freeze.Executable('fractureGUI.py', base=base, icon='star_square.ico')]

packages = ['tkinter','matplotlib','scipy']

include_files = ['star_square.ico', 'C:\\Python34\\Lib\\site-packages\\scipy']

cx_Freeze.setup(
name = 'FracturePositionMonteCarlo',
options = {'build_exe': {'packages':packages,
'include_files':include_files}},
version = '0.01',
description = 'Fracture Depth Monte Carlo',
executables = executables
)

以下是我的主脚本 fractureGUI.py 的导入部分。

import scipy
from random import random

import matplotlib
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import style
style.use('ggplot')

import tkinter as tk
from tkinter import ttk, filedialog

import sys
import json

如果有人知道为什么 cx_Freeze 找不到 scipy,请告诉我。我尝试在 include_files 下将文件路径添加到 scipy,但没有任何区别。

亲切的问候,

乔尼什曼

最佳答案

我遇到了完全相同的问题。在这里找到解决方案: https://bitbucket.org/anthony_tuininga/cx_freeze/issues/43/import-errors-when-using-cx_freeze-with

在 cx_freeze 文件夹中找到 hooks.py 文件。将第 548 行从 finder.IncludePackage("scipy.lib") 更改为 finder.IncludePackage("scipy._lib")。

保留 packages 中的“scipy”条目并删除 include_files 中的“C:\Python34\Lib\site-packages\scipy”。

关于python - Cx_freeze ImportError 没有名为 scipy 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com