नमस्कार,
मेरे पास एक पायथन स्रोत कोड फ़ाइल है, "test.py", जिसकी सामग्री print("Hello World") है।
जब मैंने इसे python3.8 पर एकीकृत py_compile मॉड्यूल का उपयोग करके बाइटकोड में संकलित करने का प्रयास किया, तो ऑपरेशन सफल रहा और .pyc फ़ाइल को चलाया जा सकता था।
लेकिन अगर मैं python3.8 (python3.8 -m dis {PATH} के साथ) पर एकीकृत डिस मॉड्यूल का उपयोग करके सामग्री को पढ़ने की कोशिश करता हूं, तो CPython मुझे यह त्रुटि देता है:

Traceback (most recent call last):
 File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
   return _run_code(code, main_globals, None,
 File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
   exec(code, run_globals)
 File "/usr/lib/python3.8/dis.py", line 553, in <module>
   _test()`
 File "/usr/lib/python3.8/dis.py", line 549, in _test
   code = compile(source, args.infile.name, "exec")
ValueError: source code string cannot contain null bytes 

स्रोत कोड का पथ /home/{USER}/test.py (और C:\Users\{USER}\test.py Windows के अंतर्गत) है।
.pyc फ़ाइल का पथ /home/{USER}/__pycache__/test.cpython-38.pyc (और C:\Users\{USER}\__pycache__\test.cpython-38.pyc Windows के अंतर्गत) है।

मुझे यह समस्या इन परिस्थितियों में मिली:

  • पायथन 3.8 और उबंटू में पायथन 3.9 के साथ (WSL1 के तहत)
  • विंडोज 10 के तहत पायथन 3.8
  • लिनक्स के तहत पायथन 3.9 (उबंटू 21.04)।

डब्ल्यूएसएल और लिनक्स के तहत, मैंने प्रयोग से पहले सभी पैकेजों को अपडेट किया।

हर उत्तर के लिए अग्रिम धन्यवाद।

0
dj_tech 15 जुलाई 2021, 23:09

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप डिस मॉड्यूल के स्रोत कोड को देखते हैं:

https://github.com/python/cpython/blob/3.8/Lib/dis.py#L540

आप देख सकते हैं कि -m आमंत्रण एक .py स्रोत फ़ाइल को संकलित करने और फिर एक चरण में अलग करने के लिए ढूंढ रहा है। यह इसे सीधे .pyc देने का समर्थन नहीं करता है।

2
David K. Hess 15 जुलाई 2021, 23:15