元のビルドフォルダでうまく動作するスクリプトのセットからcx_freexe .exeを作成しました。しかし、私はもう少し筋肉との分析コンピュータに移動するとき、私は次のエラーを取得する:Cx_freeze .exeは移動時に動作しません
import matplotlib
#Forces matplotlib to not show plot:
matplotlib.use('Agg')
import matplotlib.pyplot as pl
import os
def TICwriter(TIC, dataFile, saveDirectory):
""" Saves a TIC file as a .png in the specified saveDirectory under a
output subdirectory.
"""
#Create savename from data file name:
savefile = dataFile.split('/')[-1].split('.')[0] + '_TIC.png'
#Create ouput directory:
saveDirectory = os.path.join(saveDirectory, 'output/')
os.makedirs(os.path.dirname(saveDirectory), exist_ok=True)
#Plot figure:
Plot = pl.figure()
TICplot = Plot.add_subplot(111)
TICplot.plot([d[0] for d in TIC], [d[1] for d in TIC])
#Save and close plot:
pl.savefig(saveDirectory + savefile)
pl.close(Plot)
:
C:\Program Files\Davidek\Davidek beta 1.2.0>Davidek.exe
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\site-packages\cx_Freeze\initscripts\__start
up__.py", line 12, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\cx_Freeze\initscripts\Console
.py", line 24, in <module>
File "Davidek.py", line 11, in <module>
File "C:\Users\Max\Scilifelab\Projects\Master thesis\Davidek\Code\TICwriter.py
", line 7, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\__init__.py", line
122, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\cbook.py", line 32
, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\__init__.py", line 142,
in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\add_newdocs.py", line 1
3, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\__init__.py", line
8, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\lib\type_check.py", lin
e 11, in <module>
File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\__init__.py", line
14, in <module>
ImportError: DLL load failed: The specified module could not be found.
C:\Program Files\Davidek\Davidek beta 1.2.0>PAUSE
Press any key to continue . . .
これが問題を起こすようだコード「TICwriter.py」であります
エラーが7行で発生したとしてmatplotlibのが問題を引き起こしているようですが、私には思える:
import matplotlib
私のビルドスクリプトは次のようになります。
import sys
from os import environ
from os.path import dirname
from cx_Freeze import setup, Executable
import scipy
scipy_path = dirname(scipy.__file__)
# Set the TCL and TK library explicitly (it seems like the python 3.6 causes
# errors otherwise):
environ['TCL_LIBRARY'] = r'C:\ProgramData\Anaconda3\tcl\tcl8.6'
environ['TK_LIBRARY'] = r'C:\ProgramData\Anaconda3\tcl\tk8.6'
#Inclusion of dll files to fix tkinter import:
include_files = [r'C:\ProgramData\Anaconda3\DLLs\tcl86t.dll',
r'C:\ProgramData\Anaconda3\DLLs\tk86t.dll',
scipy_path]
#Inclusion of modules that need to be explicitly imported for some reason:
packages = []#['pyteomics']
#Dependencies that are not implicitly detected:
build_exe_options = {'includes': ['numpy.core._methods', 'numpy.lib.format', 'numpy.matlib'],
'excludes': [],
'include_files': include_files,
'packages': packages}
# GUI applications require a different base on Windows (the default is for a
# console application).
base = "Console"
#if sys.platform == 'win32':
# base = 'Win32GUI'
setup( name = 'Davidek beta 1.1.1',
version = '1.1.1',
options = {'build_exe': build_exe_options},
executables = [Executable('Davidek.py', base=base)])
.exeは、matplotlibがビルドフォルダに含まれていても、実行可能ファイルが作成されたコンピュータから元のフォルダ内のmatplotlibモジュールを検索しようとします。元のフォルダからビルドを移動しても、元のコンピュータから実行すると、.exeが正常に実行されます。私は64ビットのWindows 10でPython 3.6を使用しています。これに関するアドバイスは大歓迎です。これ以上の情報が必要な場合は教えてください。
ありがとうございました。