【发布时间】:2019-02-08 10:56:10
【问题描述】:
我是 cx_Freeze 的新用户,我想将我的 python 文件与所有需要的依赖项打包在一起。
我使用 Python3。
我在一个带有 tensorflow, sklearn, matplotlib, python-vlc... 等依赖项的 python virtualenv 下工作
以下是在 Windows 上重现相同错误所需的所有文件。
我的requirements.txt要安装
absl-py==0.7.0
altgraph==0.16.1
astor==0.7.1
audioread==2.1.6
certifi==2018.11.29
chardet==3.0.4
cx-Freeze==5.1.1
cycler==0.10.0
decorator==4.3.2
distlib==0.2.8
future==0.17.1
gast==0.2.2
grpcio==1.18.0
h5py==2.9.0
idna==2.8
Jinja2==2.10
joblib==0.13.1
Keras-Applications==1.0.7
Keras-Preprocessing==1.0.9
kiwisolver==1.0.1
librosa==0.6.2
llvmlite==0.27.0
macholib==1.11
Markdown==3.0.1
MarkupSafe==1.1.0
matplotlib==3.0.2
numba==0.42.0
numpy==1.16.1
pefile==2018.8.8
protobuf==3.6.1
py2exe==0.9.2.2
PyInstaller==3.4
pynsist==2.3
pyparsing==2.3.1
pypiwin32==223
pysrt==1.1.1
python-dateutil==2.8.0
python-vlc==3.0.4106
pywin32==224
pywin32-ctypes==0.2.0
requests==2.21.0
requests-download==0.1.2
resampy==0.2.1
scikit-learn==0.20.2
scipy==1.2.0
six==1.12.0
sklearn==0.0
tensorboard==1.12.2
tensorflow==1.12.0
termcolor==1.1.0
tornado==5.1.1
urllib3==1.24.1
watson-developer-cloud==2.8.0
websocket-client==0.48.0
Werkzeug==0.14.1
yarg==0.1.9
我有一个主要的 python 文件 IHM.py,它从另外两个 python 文件 sync.py 和 neurnet.py 导入模块。
文件ihm.py
# -*- coding: utf-8 -*-
# for Python3
from tkinter import *
import matplotlib.backends.backend_tkagg
import matplotlib.pyplot as mp
import tkinter.filedialog
from watson_developer_cloud import LanguageTranslatorV3
import json
import subprocess
import os
import vlc
from sync import *
import warnings
warnings.filterwarnings("ignore")
# Définition des variables globales
vid_file_path = ""
vid_srt_path = ""
vid_srt_path_trans = ""
vid_srt_path_sync = ""
# Création de la fenetre d'IHM
fenetre = Tk()
fenetre.title("Test Tkinter Windows")
fenetre.mainloop()
文件sync.py
# -*- coding: utf-8 -*-
from __future__ import division
from neuralNet import
文件 neurnet.py
#coding: utf-8
import os
import time
import sys
import librosa
import re
import io
import subprocess
import pysrt
import numpy as np
import matplotlib.pyplot as plt
from time import time
import tensorflow as tf
import pickle
#from sklearn.model_selection import train_test_split
#from tensorflow.contrib.layers import flatten
import sklearn
from subprocess import STDOUT
try:
from subprocess import DEVNULL # py3k
except ImportError:
import os
DEVNULL = open(os.devnull, 'wb')
这里是 cx_Freeze setup.py:
# setup.py
import sys, os
from cx_Freeze import setup, Executable
os.environ['TCL_LIBRARY'] = 'C:/Program Files/Python36/tcl/tcl8.6'
os.environ['TK_LIBRARY'] = 'C:/Program Files/Python36/tcl/tk8.6'
__version__ = "1.1.0"
buildOptions = dict(
packages = [],
excludes = [], includes = ["idna.idnadata"],
include_files = ['C:/Program Files/Python36/DLLs/tcl86t.dll','C:/Program Files/Python36/DLLs/tk86t.dll'] )
import sys
base = 'Win32GUI' if sys.platform=='win32' else None
executables = [
Executable('ihm.py', base=base)
]
setup(
name = "mgp320",
description='Projet Neural Network Speech Detection',
version=__version__,
options = dict(build_exe = buildOptions),
executables = executables
)
使用命令运行此设置:python setup.py build
所以它为我创建了一个 exe 文件,但是当我运行这个 exe 时,我得到了这个错误窗口:
引用如下:
Traceback (most recent call last):
File
"C:\Users\achraf.bentabib\Desktop\aapsa\aapsa\env\lib\site-p
ackages\cx_Freeze\initscript\__startup__.py", line 14, in run
module.run()
File
"C:\Users\achraf.bentabib\Desktop\aapsa\aapsa\env\lib\site-p
ackages\cx_Freeze\initscript\Console.py", line 26, in run
exec(code, m.__dict__)
File "ihm.py", line 5, in <module>
File
"C:\Users\achraf.bentabib\Desktop\aapsa\aapsa\env\lib\site-p
ackages\matplotlib\__init__.py", line 120, in <module>
import distutils.version
File
"C:\Users\achraf.bentabib\Desktop\aapsa\aapsa\env\lib\distut
ils\__init__.py", line 35, in <module>
loader.exec_module(real_distutils)
File "<frozen importlib._bootstrap_external>", line 674, in
exec_module
File "<frozen importlib._bootstrap_external>", line 780, in
get_code
File "<frozen importlib._bootstrap_external>", line 832, in
get_data
FileNotFoundError: [Errno 2] No such file or directory:
"C:\\Users\\achraf.bentabib\\Desktop\\aapsa\\aapsa\\stack\\b
uild\\exe.win-amd64-3.6\\lib\\library.zip\\distutils\\__init__.py'
我真的不知道我该如何解决这个问题..
【问题讨论】:
-
请提供minimal reproducible example。并且请将错误消息和完整的堆栈跟踪作为文本而不是图像发布,请参阅Why not upload images of code on SO when asking a question?
-
所以我做到了
标签: python cx-freeze distutils