बस यहां उपयोग किए जाने वाले विकल्पों को सारांशित करने के लिए।
PyInstaller टीओसी का - कर रहे हैं, के रूप में प्रलेखन कहते हैं:
एक टीओसी प्रपत्र (नाम, पथ, typecode) की tuples की एक सूची प्रतीत होता है। वास्तव में, यह एक आदेश दिया गया सेट है, सूची नहीं। एक टीओसी में डुप्लीकेट नहीं होते हैं, जहां विशिष्टता केवल नाम पर आधारित होती है।
Otherwords में, बस:
a_toc = [('uname1','/path/info','BINARY'),('uname2','/path/to','EXTENSION')...]
तो, अपने .spec फ़ाइल में - एक बार आप स्क्रिप्ट के विश्लेषण से परिणाम मिल गया है - आप तो आगे संबंधित टीओसी की या तो द्वारा संशोधित कर सकते हैं:
संचालन और चौराहे (+) एक टीओसी संशोधित करने के लिए -()
(* एक अलग रूप में, अंतर काम करने के लिए यह आप स्पष्ट रूप से TOC()
को डाल सकते हैं और ध्यान दें, चूंकि यह केवल नाम है जो विशिष्ट सेट के तत्व को परिभाषित करता है चाहिए लगता है, आप केवल उस निर्दिष्ट करने की आवश्यकता के रूप में - इसलिए ('sqlite3', None, None)
इत्यादि)
एक उदाहरण उदाहरण (एक .spec फ़ाइल से लिया गया) नीचे है - बेहतर या बदतर के लिए - मैं scipy, ipython और zmq के सभी संदर्भों को हटा देता हूं; विशिष्ट स्क्लाइट, टीसीएल/टीके और एसएसएल हटाएं डीएलएल; एक लापता opencv डालें डीएलएल; और आखिरकार matplotlib वाले लोगों के अलावा पाए गए सभी डेटा फ़ोल्डरों को हटा दें ...
क्या परिणामस्वरूप Pyinstaller .exe तब काम करेगा जब कोई .pyc फ़ाइल अपेक्षित लोड करने का प्रयास करती है।डीएलएल म्यूट :-/
# Manually remove entire packages...
a.binaries = [x for x in a.binaries if not x[0].startswith("scipy")]
a.binaries = [x for x in a.binaries if not x[0].startswith("IPython")]
a.binaries = [x for x in a.binaries if not x[0].startswith("zmq")]
# Target remove specific ones...
a.binaries = a.binaries - TOC([
('sqlite3.dll', None, None),
('tcl85.dll', None, None),
('tk85.dll', None, None),
('_sqlite3', None, None),
('_ssl', None, None),
('_tkinter', None, None)])
# Add a single missing dll...
a.binaries = a.binaries + [
('opencv_ffmpeg245_64.dll', 'C:\\Python27\\opencv_ffmpeg245_64.dll', 'BINARY')]
# Delete everything bar matplotlib data...
a.datas = [x for x in a.datas if
os.path.dirname(x[1]).startswith("C:\\Python27\\Lib\\site-packages\\matplotlib")]