خطأ في التجزئة (تم تفريغ النواة) أثناء استدعاء برنامج python النصي من NodeJS من خلال Spawn

StackOverflow https://stackoverflow.com//questions/22002701

سؤال

لدي برنامج نصي بيثون يطبع قائمة طويلة من خلال 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" خطأ في يونكس.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top