সূচিপত্র: পাইপেক্স 2 ব্যবহার করার সময় টিপল সূচক সীমার বাইরে নয় of


109

আমি বর্তমানে পাই 2 এক্সেক্স ব্যবহার করে একটি নির্বাহযোগ্য করার চেষ্টা করছি trying আমি পাইথন ৩.6 ব্যবহার করি। স্ক্রিপ্টটি আমি আমদানি ব্যবহার করছি openpyxlএবং pptxযখন পাইচার্ম ব্যবহার করি বা কমান্ড উইন্ডোটি ব্যবহার করে স্ক্রিপ্টটি চালিত করি তখন ঠিক চলে।

আউটপুট ত্রুটি উত্পাদন করে:

IndexError: tuple index out of range

নীচে আপনি cmdআউটপুট খুঁজে পেতে পারেন :

C:\Python36>python setup.py py2exe
running py2exe
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    setup(console=['Storybookmaker.py'])
  File "C:\Python36\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Python36\lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "C:\Python36\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "C:\Python36\lib\site-packages\py2exe\distutils_buildexe.py", line 188, in run
    self._run()
  File "C:\Python36\lib\site-packages\py2exe\distutils_buildexe.py", line 267, in _run
    builder.analyze()
  File "C:\Python36\lib\site-packages\py2exe\runtime.py", line 160, in analyze
    self.mf.import_hook(modname)
  File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 120, in import_hook
    module = self._gcd_import(name)
  File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 274, in _gcd_import
    return self._find_and_load(name)
  File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 357, in _find_and_load
    self._scan_code(module.__code__, module)
  File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 388, in _scan_code
    for what, args in self._scan_opcodes(code):
  File "C:\Python36\lib\site-packages\py2exe\mf3.py", line 417, in _scan_opcodes
    yield "store", (names[oparg],)
IndexError: tuple index out of range

C:\Python36>

কি কারণে IndexError?

সম্পাদনা করুন: setup.pyফাইলটি এখানে :

from distutils.core import setup
import py2exe

setup(console=['Storybookmaker.py'])

4
আপনি কি আমাদের আপনার setup.pyফাইল প্রদর্শন করতে পারেন ? কারণ সমস্যাটি আছে এবং না py2exeযা ভাল কাজ করে fine
জিন-

4
হাই জিন-ফ্রাঙ্কোইস, আমি ফাইলটি মূল পোস্টে যুক্ত করেছি। আগাম ধন্যবাদ!
ডেনিস

4
হয় Storybookmaker.pyহিসাবে একই ডিরেক্টরির মধ্যে ফাইল setup.py? আপনি setup(console=[os.path.join(os.path.dirname(__file__,'Storybookmaker.py')])ফাইলটি সনাক্ত করার চেষ্টা করার চেষ্টা করতে পারেন
জিন-

4
@ জিন-ফ্রাঙ্কোইসফ্যাব্রে সি: \ পাইথন 36 ফোল্ডারে সেটআপ.পি এবং স্টোরিবুক মেকার উভয়ই সেট করুন, যাতে এটি বিবেচনা করা উচিত না তবে আমি আপনার কোড দিয়ে যাইহোক এটি চেষ্টা করেছিলাম। এটি একই সূচিপত্র প্রাপ্ত করে। অন্য কোন চিন্তা?
ডেনিস

উত্তর:


100

পাইথন ৩.6 সিপিথনের জন্য বাইটকোডকে সম্পূর্ণরূপে নতুনভাবে ডিজাইন করেছে (এটি এখন কোনও "বাইট" কোড নয়, এটি একটি ওয়ার্ডকোড, যেখানে সমস্ত অপকডগুলি 1-3 এর পরিবর্তে দুটি বাইট প্রশস্ত)।

আপনি যে ব্যর্থতাটি দেখছেন তা py2exeওপকোড পার্সিং কোডে ঘটে , যা py2exeকেবলমাত্র 3.3 এবং 3.4 এর জন্য দাবির সমর্থনের সাম্প্রতিকতম সংস্করণ দেওয়া হয়েছে , সম্ভবত নতুন ওয়ার্ডকোড ওপকোডগুলির জ্ঞান বা সমর্থন থাকতে পারে না; এগুলি py2exeশেষ সময়ে আপডেট করা হয়েছিল এমন সময়ে তাদের কল্পনাও করা হয়নি। বাইটকোড প্রায়শই সংস্করণ থেকে সংস্করণে ছোট আকারে পরিবর্তিত হয় যা পাইথন 3.5 কেও ভেঙে ফেলতে পারে (কেবলমাত্র 3.3 এবং 3.4 সমর্থনটি স্পষ্টভাবে দাবি করা হয়), তবে 3.6 ব্যর্থ হওয়ার 100% গ্যারান্টিযুক্ত।

আপডেট: এই মুহুর্তে (নভেম্বর 2019), শেষের পাঁচ বছর পেরিয়ে গেছেpy2exe প্রকাশের এবং ২০২০ এর শুরুর দিকে (যখন পাইথন ২ সমর্থন পুরোপুরি শেষ হয়ে যায়), এটি পাইথনের কোনও সমর্থিত সংস্করণে চলবে না (৩.৪ ইতিমধ্যে শেষ হয়ে গেছে) সমর্থন)। আমি মনে করি এটি প্রকল্পটি পরিত্যাজক বলে নিরাপদ; অন্যান্য বিকল্পগুলি সন্ধান করুন, যেমন cx_Freezeবা PyInstaller


4
তাহলে কোন বিকল্প নেই?
অ্যালেক্স জোলিগ

@ অ্যালেক্সজোলিগ: এখানে রয়েছে, যদিও আমি এগুলি পরীক্ষা করে দেখিনি যে তারা সব পাইথন ৩.6 সুসংগত। আমি পাইআইনস্টলার এবং সিএক্স_ফ্রিজে সম্পর্কে সচেতন; অন্যদের থাকতে পারে।
শ্যাডোর্যাঞ্জার

8
আমি পরীক্ষা করেছি cx_freeze। এটি পাইথন 3.6 এর সাথে সামঞ্জস্যপূর্ণ তবে এটি একটি একক এক্স ফাইল তৈরি করতে পারে না। সমস্যাটি Pyinstallerহচ্ছে আপনি
x you

এই তথ্যের জন্য ধন্যবাদ। অবশ্যই বলতে হবে আমি হালকাভাবে আশ্চর্য হয়েছি এটি সত্যিই কোথাও ডকুমেন্টেড নয়। এমনকি পাইপেক্স এক্সের বর্ণনাটি কেবল বলেছে Python 3.3 and later are supported। অবশ্যই, অন্ধকারে কাজ করা এত পুরানো কিছু প্রত্যাশা করা সম্ভবত কিছুটা নিষ্পাপ তবে আপনি যখন এই জায়গাতে একজন শিক্ষানবিশ হন, তখন মোকাবেলা করার জন্য যথেষ্ট নবাগত বিভ্রান্তি রয়েছে।
fostandy

40

আমি যে সমাধানটি ব্যবহার করেছি তা হ'ল পাইআইনস্টলারের বিকল্প হিসাবে ব্যবহার করা কারণ পাই 2 এক্সেক্স পাইথন ৩.৪ এ বিকাশ বন্ধ করে দিয়েছিল এবং নতুন সংস্করণগুলির সাথে কাজ করবে না।

C:/>pip install pyinstaller
C:/>pyinstaller yourprogram.py

এটি yourprogram নামক ফোল্ডারে থাকা yourprogram.exe এর সাথে দূরের সাথে একটি ডাইরেক্ট ডিরেক্টরী তৈরি করবে।

সমস্ত উত্পন্ন ফাইলগুলিকে একটি এক্সিকিউটেবল ফাইলে রাখার জন্য -F ব্যবহার করুন।

C:/>pyinstaller -F yourprogram

আপনি জিইআইআই-এর জন্য কনসোল প্রদর্শন সরাতে চাইলে -ই ব্যবহার করতে পারেন।

C:/>pyinstaller -w yourprogram.py

এটি সমস্ত টগেরথর লাগানো।

C:/>pyinstaller -w -F yourprogram.py

পাইআইনস্টলার সম্পর্কে আরও পড়ুন এখানে

পাইথন সংস্করণ 3.7.3।


4
আমি যদি অন্য কম্পিউটারগুলিতে প্রোগ্রামটি চালনা করি তবে আমি "কোনও মডিউল খুঁজে পাওয়া যায়নি .."
ইয়্যারিন কোহেন

পাইনস্টলার সম্পর্কে আপনার সমাধানের জন্য ধন্যবাদ উইন্ডোজ 10-তে মাইংডব্লিউ 64 পাইথন3.8.2 রিলিজ এবং জিটিকে ব্যবহার করে একটি স্ট্যান্ডলোন প্রজেক্টটি সফলভাবে পরিচালনা করতে পরিচালনা করুন: জিআই, জিটিসি, ডেলস..মিংগউ 64৪ শেলটিতে একটি সাধারণ "$ পাইস্টালার আপনার প্রোগ্রাম" কমান্ডটি ব্যবহার করে ডিএসটি ফোল্ডারে এখানে কিছু রয়েছে। পাইনস্টলার + সিথন দেখতে একটি দুর্দান্ত কম্বোর মতো দেখাচ্ছে।
জেরোম

10

আমার একই সমস্যা ছিল, যেমন কাজের মতো আমি cx_freeze ব্যবহার করেছি। আমার অ্যাপ্লিকেশনটি ডাব্লুএক্সপিথন, উইন্ডোজ 10, পাইথন 3.6, সিএক্স_ফ্রিজে 5.5.1 এর উপর ভিত্তি করে

এটি আমি যে সেটআপ ফাইলটি ব্যবহার করেছি তা ডিস্ট ফোল্ডারে এমএসআই ফাইল পেয়েছি।

#setup.py
import sys, os
from cx_Freeze import setup, Executable

__version__ = "1.1.0"

include_files = ['logging.ini', 'config.ini', 'running.png']
excludes = ["tkinter"]
packages = ["os", "idna", "requests","json","base64","pyodbc"]

setup(
    name = "appname",
    description='App Description',
    version=__version__,
    options = {"build_exe": {
    'packages': packages,
    'include_files': include_files,
    'excludes': excludes,
    'include_msvcr': True,
}},
executables = [Executable("b2b_conn.py",base="Win32GUI")]
)`

তারপর python setup.py bdist_msi


4
আপনার মত, আমি এক্সিকিউটেবল তৈরি করতে cx_freeze ব্যবহার করেছি কারণ এটি আমার অজগর সংস্করণের সাথে সামঞ্জস্যপূর্ণ এবং ব্যবহার করা সহজ। আপনার সেটআপ ফাইলটি ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ যাতে লোকেরা এটি উদাহরণ হিসাবে ব্যবহার করতে পারে।
ডেনিস

আমার যদি থাকে তবে আমি from PyQt5 import QtGuiকীভাবে এটিতে প্রবেশ করব packages? শুধু PyQt5নাকি শুধু QtGuiনাকি দুজনেই?
হ্রভোজে টি

হ্রোভয়ে টি, আমি পুরোটা অন্তর্ভুক্ত করেছি PyQt5
তারাস মাইখলচুক


7

পাইথন ৩.৪.৩ ইনস্টল করে আমি একপর্যায়ে চেষ্টা করেছি:

C:\socket> c:\Python34\python.exe setup.py py2exe

1) আপনার স্ক্রিপ্ট ফোল্ডারে প্রবেশ করুন

২) আপনার যে কোনও অ্যান্টিভাইরাসকে নিষ্ক্রিয় করুন (অদ্ভুত জিনিস, অন্য এসও প্রশ্ন এক্সডি দ্বারা জানুন)

3) পাইথনকে তার পরম পথ দ্বারা 3.4.3 ইন্টারপ্রেটারকে কল করুন, আমার ক্ষেত্রে, আমি ইনস্টল করেছি:

C:\Python34

4) কমান্ড কার্যকর

C:\Python34\python.exe setup.py py2exe

পাইথন 3.5.৩ এর সাথে আমি একই জিনিসটি করার চেষ্টা করেছি তবে পাইপেক্সটি ইনস্টল করতে গিয়ে আটকে গেলাম কারণ পাইপের একটি নতুন সংস্করণ প্রয়োজন, আমি একটি ত্রুটি পাই। You are using pip version 8.1.1, however version 9.0.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.আমি যখন পাইপ আপগ্রেড করার চেষ্টা করি তখন আমি একই ত্রুটি পাই!
ডেনিস

যেমনটি আমি দেখতে পাচ্ছি, আপনার কাছে দুটি পছন্দ রয়েছে: 1) Try with Python 3.4.3, this one i have already tested. 2) Identify which python you have, when you type at console 'python', what version says?আপনার কাছে অজগর থাকতে পারে এবং আপনি কোনটি আপডেট করতে চান তা নির্দিষ্ট করতে হবে।
রিকার্ডো মার্টেনেজ

যাইহোক, @ ডেনিস
রিকার্ডো

মার্টিনেজ সংস্করণটি এখন 3.6 এর পরিবর্তে 3.5 বলে। আমি 3.5 এর জন্য পথটি নির্দিষ্ট করেছি এবং পাইপ 8.1.1 কেবলমাত্র 3.5 এর জন্য ইনস্টল করা আছে, কারণ 3.6 ইতিমধ্যে 9.0.1 রয়েছে। আমি আপনার একাধিক সংস্করণ দিয়ে পরামর্শ চেষ্টা করব।
ডেনিস

বিলম্বের জন্য দুঃখিত, আপনার পাইথন ফোল্ডারে প্রবেশ করুন এবং 'পাইথন-এম পাইপ ইনস্টল করুন - আপগ্রেড পাইপ' চালান, এবং আপনার পাইথন 3.5 পিপ আপডেট করুন
রিকার্ডো

0

লেখার সময়, সর্বশেষতম পাইথন-সংস্করণটি 3.8 এবং পাইথেক্সে অজগর -3.4 অবধি কাজ করে। পাইথনস্টলার পাইথন -৩.7 অবধি কাজ করে। ব্যবহার pyinstaller এর কম্যান্ড-লাইন অপশন (যেমন --onefile একটি স্বতন্ত্র এক্সিকিউটেবল করতে) মধ্যে অপশন কোডিং তুলনায় অনেক সহজ py2exe গুলি setup.py ফাইল '... বিশেষ করে যেহেতু setup.py ফাইল python2 কাজ কাজ করে না পাইথন 3 এর জন্য। পটভূমি প্রক্রিয়া হিসাবে এক্সিকিউটেবল শুরু করার জন্য অন্য দরকারী পাইনস্টলারের বিকল্পটি হ'ল --noconsole

সুতরাং, একটি অল্প সময়ের সমাধান অজগর-মডিউল ভার্চুয়ালেনভ ব্যবহার করছে । তারপরে আপনি এটির পুরানো সংস্করণে প্রতিস্থাপনের জন্য তার বর্তমান অজগর-সংস্করণটি সমস্ত মডিউলগুলির সাথে আনইনস্টল না করেই আপনার নির্বাহযোগ্য তৈরি করতে পারেন।

C:\Users\jf>pip install virtualenv
C:\Users\jf>python -m virtualenv box37 -p c:\users\jf\python37\python.exe
C:\Users\jf>C:\Users\jf\box37\Scripts\activate
(box37) C:\Users\jf>
(box37) C:\Users\jf>pip install pyinstaller
(box37) C:\Users\jf>pyinstaller --onefile test.py
(box37) C:\Users\jf>deactivate
C:\Users\jf>

কমান্ড-লাইন বিকল্প- পিসি: \ পথ \ থেকে \ লক্ষ্য \ পাইথন \ দোভাষী , কেস-সংবেদনশীল! জন্য pyinstaller ব্যবহার পাথ আপনি পাইথন-3.7 ডাউনলোড করা (আপনি py2exe 3.4 পাথ)।

ভার্চুয়াল env তৈরি করা হয় যখন। ওয়ার্কিং ডিরেক্টরিতে আপনার প্রদত্ত নামের (যেমন বক্স 37) দিয়ে একটি ডিরেক্টরি তৈরি করে। এই ডিরেক্টরিতে স্ক্রিপ্ট \ স্ক্রিপ্ট \ সক্রিয়করণ কার্যকর করে ভাইরাল এনভিলিতে প্রবেশ করে ters - বিজ্ঞপ্তি (বক্স 37) আমার প্রম্পটের সামনে উপস্থিত হবে।

পাইথনের ভার্চুয়াল এনভির ভিতরে। পাইপ এমন মডিউলগুলি ইনস্টল করতে ব্যবহৃত হয় যা বাইরের অজগর থেকে অ্যাক্সেসযোগ্য হবে না - লক্ষ্য করুন এটির নিজস্ব \ Lib \ সাইট-প্যাকেজ ডিরেক্টরি রয়েছে। অতএব, যা ভ্যুচুলেভকে একটি নিখুঁত পরীক্ষা-সেট-আপ মডিউল করে তোলে - আপনি যদি স্ক্রু আপ করেন তবে কেবল (উদাহরণস্বরূপ বক্স 37) ডিরেক্টরিটি মুছুন।

পাইথন ৩.7 ডাউনলোড করুন , উইন্ডোজ x86-64 এক্সিকিউটেবল ইনস্টলার। পাইথন ৩.৪ ডাউনলোড করুন , উইন্ডোজ x86-64 এমএসআই ইনস্টলার।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.