pyinstallerを使用して、pythonスクリプトの1つのフォルダを実行可能にします。それはむしろ遅いです。私のコードの最初のものは "start"という印字です。実行可能ファイルを実行すると、画面に表示されるまでに10秒以上かかります。私はこの遅延時間を減らしたいと思います。私はスタートアップに必要なDLLの数を減らすことが役立つだろうと推測しています。私が気づいpyinstallerのmatplotlibとqtへの依存を取り除く(遅い起動)
ことの一つは、私はこれらを使用する予定がないにもかかわらず、matplotlibのとqt5のDLLは、出力フォルダにコピーされているということでした。私自身のコードでは、これらのライブラリに依存しません。私の輸入品は以下のとおりです。pyinstall出力の
import os
import sys
import argparse
import numpy as np
import logging
import json
from element import Square, Slanted
from skimage import measure
from skimage.segmentation import clear_border
try:
from skimage import filters
except:
from skimage import filter as filters
from scipy import ndimage
from scipy.ndimage.filters import gaussian_filter, median_filter
from scipy.optimize import curve_fit
from enum import Enum
import time
最初の部分、それはmatplotlibのを言及起動するまで、このです:
212 INFO: PyInstaller: 3.2.1
213 INFO: Python: 3.5.2
214 INFO: Platform: Windows-7-6.1.7601-SP1
249 INFO: wrote x:\script.spec
255 INFO: UPX is not available.
308 INFO: Extending PYTHONPATH with paths
['x:\\', 'x:\\script']
310 INFO: checking Analysis
311 INFO: Building Analysis because out00-Analysis.toc is non existent
312 INFO: Initializing module dependency graph...
346 INFO: Initializing module graph hooks...
352 INFO: Analyzing base_library.zip ...
6794 INFO: running Analysis out00-Analysis.toc
7585 INFO: Caching module hooks...
7596 INFO: Analyzing x:\script.py
10819 INFO: Processing pre-find module path hook distutils
13057 INFO: Processing pre-find module path hook site
13061 INFO: site: retargeting to fake-dir 'c:\\anaconda3\\envs\\myeenv\\lib\\site-packages\\PyInstaller\\fake-modules'
20369 INFO: Processing pre-safe import module hook win32com
27275 INFO: Processing pre-safe import module hook six.moves
38245 INFO: Loading module hooks...
38247 INFO: Loading module hook "hook-pydoc.py"...
38250 INFO: Loading module hook "hook-xml.dom.domreg.py"...
38253 INFO: Loading module hook "hook-xml.py"...
38256 INFO: Loading module hook "hook-distutils.py"...
38265 INFO: Loading module hook "hook-pytz.py"...
38434 INFO: Loading module hook "hook-numpy.core.py"...
38832 INFO: MKL libraries found when importing numpy. Adding MKL to binaries
38837 INFO: Loading module hook "hook-_tkinter.py"...
40127 INFO: checking Tree
40129 INFO: Building Tree because out00-Tree.toc is non existent
40131 INFO: Building Tree out00-Tree.toc
40264 INFO: checking Tree
40266 INFO: Building Tree because out01-Tree.toc is non existent
40266 INFO: Building Tree out01-Tree.toc
40301 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
40918 INFO: Loading module hook "hook-matplotlib.py"...
43519 INFO: Loading module hook "hook-win32com.py"...
は私が私のmatplotlibの/ qt5依存性を与えているライブラリはどのように見つけるのですか?起動時間を改善するために他にできることはありますか?
私が使用して試してみた:skimage.segmentationはmatplotlibのを含めていることが表示されます
編集
...
pyinstaller script.py --exclude-module matplotlib,qt5
をしかし、それはまだmatplotlib.backendsなどを含め始まり...
Traceback (most recent call last):
File "myenv\script.py", line 11, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\segmentation\__init__.py", line 6, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\segmentation\boundaries.py", line 5, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\morphology\__init__.py", line 1, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\morphology\binary.py", line 6, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\morphology\misc.py", line 5, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\morphology\selem.py", line 3, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\draw\__init__.py", line 1, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\draw\draw.py", line 6, in <module>
File "c:\anaconda3\envs\myenv\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\skimage\_shared\_geometry.py", line 4, in <module>
ImportError: No module named 'matplotlib'
Failed to execute script myenv
編集2
小テスト。次のスクリプトの一つのフォルダを実行可能にするために使用さpyInstallerの:
import numpy as np
print(np.array([0]))
は、実行するのに約6秒を取りました。 今朝、私はのsambaマウントから実行していることに気付きました。これは起動時間にかなり影響するかもしれません。 実行時に0.7秒が起動したとき!私はまだディストリビューションのサイズを小さくすることに興味があります(> 500MB)。除くモジュールと
私のアプリケーションは、あなたのケースに記載されているような多くの依存関係を持っている(例えばwxPythonのnumpyのscipyのダウンロードmatplotlibのなど)が、win7の上で1秒未満で起動します。私はpy2exeでパッケージ化しました。他のパッケージツールと比べて起動速度を比較したとき、py2exeが私のアプリケーションに最適でした。あなたはdllを言うので、私はそれもWindowsだと仮定しています。 – otterb
Windowsを使用しています。py2exeを使用していただきありがとうございます。私はこれをチェックします。今朝、私はこれをサンバ山から走っていることに気付きました。私は地元のコピーでいくつかのテストを行い、上記の質問を更新します。 – Goosebumps