وصف المشكلة/الخطأ/السؤال
أحاول إعداد مشغل Python خارجي دون استخدام حاوية.
تابعت دليل Task runners ( Task runners | n8n Docs ) لكنني قمت بتثبيت تطبيق المشغل ( GitHub - n8n-io/task-runner-launcher: CLI utility to launch an n8n task runner in external mode · GitHub ) محليًا.
قمت بتثبيت مشغل Python،
❯ pip list | grep python-runner
python-runner 0.6.1
task-runners.json
{
"task-runners": [
{
"runner-type": "python",
"workdir": "/home/user/n8n-files/",
"command": "/usr/bin/python3",
"args": [ "-m", "python-runner" ],
"health-check-server-port": "5681"
}
]
}
عند تشغيل تطبيق المشغل، يكون الإخراج عالقًا عند،
INFO [launcher:py] Waiting for task broker to be ready…
INFO [launcher:py] Waiting for launcher’s task offer to be accepted…
إذا بدأت سير عمل n8n، أرى الأخطاء،
ERROR [runner:py] /usr/bin/python3: No module named python-runner
ERROR [launcher:py] Runner process exited with error: exit status 1
لا أعتقد أن الأمر يتعلق بمتغيرات البيئة، لأنني وضعتها في /etc/environment، لكنني حاولت أيضًا إضافتها في task-runners.json
أنا متأكد من أنني أفتقد شيئًا واضحًا هنا. هل هذا هو المشغل الخاطئ؟
ما هي رسالة الخطأ (إن وجدت)؟
./task-runner-launcher python
INFO Starting launcher’s health check server at port 5680
INFO [launcher:py] Starting launcher goroutine…
WARN DEPRECATION WARNING: N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT will no longer be automatically passed to runners in a future version. Please add this env var to ‘allowed-env’ or use ‘env-overrides’ in your task runner config to maintain current behavior.
WARN DEPRECATION WARNING: N8N_RUNNERS_TASK_TIMEOUT will no longer be automatically passed to runners in a future version. Please add this env var to ‘allowed-env’ or use ‘env-overrides’ in your task runner config to maintain current behavior.
INFO [launcher:py] Waiting for task broker to be ready…
INFO [launcher:py] Waiting for launcher’s task offer to be accepted…
ERROR [runner:py] /usr/bin/python3: No module named python-runner
ERROR [launcher:py] Runner process exited with error: exit status 1
مشاركة الإخراج المُرجع من العقدة الأخيرة
N/A
معلومات عن إعداد n8n الخاص بك
- إصدار n8n: 2.23.2
- قاعدة البيانات (الإفتراضي: SQLite): N/A
- إعدادن8n EXECUTIONS_PROCESS (الإفتراضي: own, main):
- تشغيل n8n عبر (Docker, npm, n8n cloud, desktop app): npm
- نظام التشغيل: Cachy OS
تمام! إذاً تريد مني أن أعيد كتابة نفس الرد لكن بطريقة تبدو أقل من الذكاء الاصطناعي وأكثر إنسانية. ها هو:
الحل أبسط مما تعتقد، إنه مجرد خطأ إملائي في ملف الإعدادات الخاص بك.
المعاملات (args) لديك تحتوي على "python-runner" بشرطة، لكن علم -m في Python لا يقبل الشرطات في أسماء الوحدات النمطية. غيّره إلى شرطة سفلية:
"args": [ "-m", "python_runner" ]
هذا هو السبب الوحيد لخطأ No module named python-runner.
قبل إعادة التشغيل، فقط شغّل هذا بسرعة للتأكد من أن كل شيء يشير إلى المكان الصحيح:
/usr/bin/python3 -m python_runner --help
إذا عمل هذا في طرفيتك، فأنت انتهيت. إذا فشل، فربما تم تثبيت الحزمة تحت بيئة Python مختلفة. أصلحها بـ:
/usr/bin/python3 -m pip install python-runner
ثم حاول مرة أخرى وينبغي أن يعمل.
وبخصوص رسائل Waiting for task broker، فهي طبيعية تماماً، إنه فقط البداية تنتظر اتصال n8n، لا شيء معطوب هناك.
أخبرني كيف تسير الأمور.
هذا اكتشاف ممتاز!
الآن تطبيق المشغِّل يعطيني،
ERROR [runner:py] /usr/bin/python3: No module named python_runner.main; 'python_runner' is a package and cannot be directly executed
2026/06/03 19:09:15 ERROR [launcher:py] Runner process exited with error: exit status 1
والسبب هو هذا،
❯ /usr/bin/python3 -m python_runner --help
Traceback (most recent call last):
File "", line 194, in _run_module_as_main
File "", line 164, in _get_module_details
File "", line 893, in get_code
File "", line 823, in source_to_code
File "", line 491, in _call_with_frames_removed
File "/home/user/Templates/n8n_python_runner/python_runner.py", line 8
self.send_response(200); self.end_headers(); self.wfile.write(b"OK") else:
^^^^
SyntaxError: invalid syntax
هل هذا مشغِّل المهام الخاطئ؟ هل يمكنني استخدام حزمة npm @n8n/task-runner؟
شكراً لك!
EDIT؛
تم تصنيفك لأنك بدوت وكأنك ذكاء اصطناعي؟ 
هذا المنشور كان معلقاً في حالة “قيد الانتظار” لمدة يوم. الإشراف صارم جداً هنا!
EDIT 2؛
حاولت أيضاً تثبيت مشغِّل n8n Python المضمّن في صورة Docker من الدليل.
pip install git+https://github.com/n8n-io/n8n.git@master#subdirectory=packages/@n8n/task-runner-python
الحزمة لا تُرى حتى من قِبل Python. أعتقد أنها جزء من حزمة n8n الأكبر.
Python لا يقوم بتشغيل المكتبة التي حصلت عليها من pip. إنه يعثر على ملف في مجلدك يسمى python_runner.py. يحاول تشغيل ذلك الملف بدلاً منها. هذا الملف يحتوي على خطأ في السطر 8، أعتقد. هذا هو سبب توقفه عن العمل.
الحل:
- غيّر اسم الملف python_runner.py الموجود في مجلد /home/user/Templates/n8n_python_runner إلى شيء مثل my_test_runner.py.
عندما تفعل ذلك، سيبحث Python عن المكتبة التي قمت بتثبيتها واستخدام تلك بدلاً من الملف المحلي. جرّب هذا. انظر ماذا سيحدث. سيقوم Python بعد ذلك بتشغيل المكتبة التي قمت بتثبيتها من pip وليس ملف python_runner.py المحلي. يجب أن يؤدي هذا إلى حل المشكلة المتعلقة بعدم قيام Python بتشغيل المكتبة التي قمت بتثبيتها.
لقد أنشأت بيئة افتراضية وقمت بـ pip install python-runner. من داخل البيئة الافتراضية،
venv❯ python3 -c "import python_runner; print('Success')"
Success
n8n-task-runners.json
{
"task-runners": [
{
"runner-type": "python",
"workdir": "/home/user/.n8n-files/",
"command": "/home/user/Templates/n8n_python_runner/venv/bin/python3",
"args": [ "/home/user/Templates/n8n_python_runner/venv/lib/python3.14/site-packages/python_runner/runner.py" ],
"health-check-server-port": "5681"
}
]
}
./task-runner-launcher python
INFO [launcher:py] جاري انتظار وسيط المهام ليكون جاهزاً…
INFO [launcher:py] جاري انتظار قبول عرض المهام من قِبل المُطلِق…
ERROR [runner:py] Traceback (most recent call last):
ERROR [runner:py] File "/home/kc/Templates/n8n_python_runner/venv/lib/python3.14/site-packages/python_runner/runner.py", line 13, in
ERROR [runner:py] from .output import OutputBuffer
ERROR [runner:py] ImportError: attempted relative import with no known parent package
ERROR [launcher:py] خرج عملية المُشغِّل برسالة خطأ: حالة الخروج 1
هل هناك تقدم؟
@lost_ghost مرحبا !
المشكلة الأساسية: python-runner من PyPI ليس مشغل مهام n8n بلغة Python. إنها حزمة مختلفة وغير ذات صلة. مشغل n8n الحقيقي بلغة Python لم يتم نشره على PyPI، وهذا هو السبب في فشل محاولة pip install السابقة من المستودع أيضًا.
بدون Docker، الطريق الوحيد أمامك هو استنساخ مستودع n8n وإعداد المشغل من المصدر:
git clone https://github.com/n8n-io/n8n.git
cd n8n/packages/@n8n/task-runner-python
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
ثم وجّه ملف task-runners.json الخاص بك إلى ذلك venv مع نقطة الدخول -m src.main. لكن هذا إقليم غير مدعوم، حيث تغطي المستندات فقط إعداد قائم على Docker.
أخبرني إذا نجح الأمر !
./task-runner-launcher python
INFO [launcher:py] Waiting for task broker to be ready…
2026/06/04 12:38:50 INFO [launcher:py] Waiting for launcher's task offer to be accepted…
2026/06/04 12:39:08 INFO [launcher:py] Runner process exited on idle timeout
2026/06/04 12:39:08 INFO [launcher:py] Waiting for task broker to be ready…
2026/06/04 12:39:08 INFO [launcher:py] Waiting for launcher's task offer to be accepted…
في واجهة n8n الرسومية أتلقى خطأ،
تم اكتشاف انتهاكات أمنية
أنا غير متأكد من طبيعة هذه الانتهاكات الأمنية.
@lost_ghost
عداء (runner) الخاص بك يعمل بشكل صحيح الآن، وحلقة انتظار المهلة الزمنية في السجلات طبيعية، حيث يقوم المشغّل بإيقاف العداء عند عدم النشاط وإعادة تشغيله عند الحاجة.
خطأ “تم كشف انتهاكات أمنية” يعني أن وضع الحماية (sandbox) يحظر استيراد مكتبة Python القياسية بشكل افتراضي.
أضف env-overrides إلى ملف task-runners.json:
{
"runner-type": "python",
"workdir": "/home/user/.n8n-files/",
"command": "/path/to/n8n/packages/@n8n/task-runner-python/.venv/bin/python3",
"args": ["-I", "-B", "-X", "disable_remote_debug", "-m", "src.main"],
"health-check-server-port": "5681",
"env-overrides": {
"N8N_RUNNERS_STDLIB_ALLOW": "*",
"N8N_RUNNERS_EXTERNAL_ALLOW": "*"
}
}
أخبرني إذا اختفى خطأ الأمان!
نعم، هذا حل المشكلة. شكراً! لقد أوقفني هذا لمدة أسبوع الآن.