使用 cx_Freeze 时出现问题:“无法导入名称 'tf2'”

Posted

技术标签:

【中文标题】使用 cx_Freeze 时出现问题:“无法导入名称 \'tf2\'”【英文标题】:Problem when using cx_Freeze: "cannot import name 'tf2'"使用 cx_Freeze 时出现问题:“无法导入名称 'tf2'” 【发布时间】:2019-08-22 12:13:33 【问题描述】:

我有一个 Python 代码,我使用 cx_Freeze 将其转换为 .exe。此任务正常工作,没有任何错误。 但是当我尝试运行我的 .exe 时,会发生以下错误:

从 tensorflow.python 导入 tf2 ImportError: 无法导入名称 'tf2'

我的ann.py 代码是:

import numpy as np
import sys

。 . .

X_test=XinN
Y_test=XoutN


#Criando o modelo
from keras.models import Sequential
from keras.layers import Dense

modelo = Sequential()

for i in range(int((num_par-4)/2)):
   modelo.add(Dense(int(parametros[i+4]), kernel_initializer='normal',activation=ativacao(int(parametros[i+5])))) #camadas ocultas
modelo.add(Dense(num_out, kernel_initializer='normal',activation=ativacao(int(parametros[num_par-1])))) #camada de saída

modelo.compile(optimizer='adam',loss='mean_squared_error')

hist = modelo.fit(X_train, Y_train, epochs=800, verbose=0, batch_size=10,validation_data=(X_test, Y_test))

XobsoutN=modelo.predict(XobsN)
Xobsout=XobsoutN*(max_out-min_out)+min_out
np.savetxt("Xobsout.txt",Xobsout.transpose(),delimiter='\t')

loss=[" "," "]
loss[0] = hist.history['loss']
loss[1] = hist.history['val_loss']

np.savetxt("erro.txt",loss,delimiter='\t')

我的 cx_Freeze setyp.py 是:

from cx_Freeze import setup, Executable
import sys

base = None

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


executables = [Executable("ANN.py", base=base)]

packages = ["idna"]

options = 
    'build_exe': 
        'includes':['atexit', 'numpy.core._methods', 'numpy.lib.format'],
        'packages':packages,
    ,



import os

os.environ['TCL_LIBRARY'] = "C:\\ProgramData\\Anaconda3\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\ProgramData\\Anaconda3\\tcl\\tk8.6"

setup(
    name = "Nome Executavel",
    options = options,
    version = "1.0",
    description = 'Descricao do seu arquivo',
    executables = executables
)

谁能帮我解决这个错误?

我在使用 cx_Freeze 时遇到了许多其他错误,这个论坛对解决所有这些错误很有帮助。非常感谢!

【问题讨论】:

【参考方案1】:

尝试将"tensorflow" 添加到您的setup.py 脚本中的packages 列表中:

 packages = ["idna", "tensorflow"]

【讨论】:

以上是关于使用 cx_Freeze 时出现问题:“无法导入名称 'tf2'”的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_freeze 转换为 *.exe 时出现 SSL 异常

cx_Freeze 将 Python 和 Pygame 文档编译为 .exe 文件时出现奇怪的错误

将 .py 转换为 .exe 时出现 cx_Freeze 错误

使用 cx_Freeze 时出现“ImportError: DLL load failed: The specified module could not be found”,即使添加了 tcl86t

cx_freeze Matplotlib 问题

Python cx_Freeze 错误“没有名为 'cx_Freeze.util' 的模块”