خطأ في التجزئة (تم تفريغ النواة) أثناء استدعاء برنامج python النصي من NodeJS من خلال Spawn
-
20-12-2019 - |
سؤال
لدي برنامج نصي بيثون يطبع قائمة طويلة من خلال R الإحصائي (بواسطة PypeR).يعمل نص بايثون هذا بشكل جيد تمامًا.
أحاول الآن تشغيل هذا البرنامج النصي من NodeJS من خلال وظيفة النشر الخاصة بـ Child_process ولكنه فشل بسبب الخطأ التالي: -
Traceback (most recent call last):
File "pyper_sample.py", line 5, in <module>
r=R()
File "/home/mehtam/pyper.py", line 582, in __init__
'prog' : Popen(RCMD, stdin=PIPE, stdout=PIPE, stderr=return_err and _STDOUT or childstderr, startupinfo=info),
File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
./temp.sh: line 1: 27500 Segmentation fault (core dumped) python pyper_sample.py o1dn01.tsv cpu_overall
child process exited with code : 139
ملحوظة:نص بايثون الخاص بي يعمل بشكل مثالي.لقد قمت بالفعل باختباره يدويًا.
المحلول
نص بايثون الخاص بي يعمل بشكل مثالي.لقد قمت بالفعل باختباره يدويًا.
والإخراج يظهر ذلك بوضوح OSError: No such file or directory
حدث استثناء خلال Popen()
يتصل.
وهذا يعني أنه لم يتم العثور على البرنامج على سبيل المثال،
>>> from subprocess import Popen
>>> p = Popen(["ls", "-l"]) # OK
>>> total 0
>>> p = Popen(["no-such-program-in-current-path"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
وأيضًا، تمرير الأمر بالكامل كسلسلة بدلاً من قائمة (shell=False
افتراضيًا) خطأ شائع:
>>> p = Popen("ls -l")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
تأكد:
- يمكن العثور على برنامج (طفلك) الحالي
$PATH
- استخدم وسيطة القائمة بدلاً من السلسلة
- اختبر ما إذا كان يعمل إذا قمت بتشغيله يدويًا من دليل عمل مختلف، أو مستخدم مختلف، وما إلى ذلك
ملحوظة:لك Popen()
يمر المكالمة startupinfo
هذا هو نظام التشغيل Windows فقط.يفشل أمر السلسلة الذي يحتوي على العديد من الوسائط التي قد تعمل على نظام التشغيل Windows مع الملف "No such file or directory"
خطأ في يونكس.