ذكرت @ j1nx أنه تم رفع الاستثناءات أثناء تدريب Padatious على Python 3.9 على غرار
Exception in thread Thread-8:
Traceback (most recent call last):
File "/usr/lib/python3.9/threading.py", line 950, in _bootstrap_inner
self.run()
File "/usr/lib/python3.9/threading.py", line 888, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.9/site-packages/padatious/training_manager.py", line 98, in train
pool = mp.Pool()
File "/usr/lib/python3.9/multiprocessing/context.py", line 119, in Pool
return Pool(processes, initializer, initargs, maxtasksperchild,
File "/usr/lib/python3.9/multiprocessing/pool.py", line 191, in __init__
self._setup_queues()
File "/usr/lib/python3.9/multiprocessing/pool.py", line 343, in _setup_queues
self._inqueue = self._ctx.SimpleQueue()
File "/usr/lib/python3.9/multiprocessing/context.py", line 113, in SimpleQueue
return SimpleQueue(ctx=self.get_context())
File "/usr/lib/python3.9/multiprocessing/queues.py", line 342, in __init__
self._rlock = ctx.Lock()
File "/usr/lib/python3.9/multiprocessing/context.py", line 67, in Lock
from .synchronize import Lock
ImportError: cannot import name 'Lock' from partially initialized module 'multiprocessing.synchronize' (most likely due to a circular import) (/usr/lib/python3.9/multip
rocessing/synchronize.py)
يبدو أن المشكلة مرتبطة بتغيير في كيفية استيراد الوحدات / الحزم من Python 3.9 وما بعده انظر تقرير الخطأ .
يتوفر حل سريع وقذر للاختبار هنا . يقوم بشكل أساسي بتحميل الوحدات النمطية التي قد تكون غير مكتملة عند محاولة إنشاء كائن Pool.
من الصعب بعض الشيء معرفة ما يحدث بالضبط ولكن أحد الأسباب المحتملة هو msm ، والذي يستخدم أيضًا تجمع متعدد المعالجات (threadpool ولكنه نفس الفئة الأساسية) ... ما لم يتم إطلاق التدريب بطريقة أو بأخرى في سلاسل منفصلة بالإضافة إلى العمليات الداخلية في لكن هذا يبدو بعيد المنال.
لست متأكدًا من الإجراء الأكثر صحة هو أمرين يمكن اختبارهما:
لإعادة إنتاج
خطوات إعادة إنتاج السلوك:
البيئة (يرجى استكمال المعلومات التالية):
آمل أن يكون لدي قريبًا صورة OVOS منفصلة مع Python 3.9 مرة أخرى لاختبار ذلك. سأرى ما إذا كان بإمكاني إنشاء OVOS-Python3.9 نظيفًا على آلة بناء أخرى (بشكل طفيف). تقرير مرة أخرى في أقرب وقت ممكن.
يظهر أيضًا على Arch Linux
حاولت تثبيت mycroft مع Python 3.9:
عندما بدأت تشغيل mycroft cli حصلت على بعض الأخطاء:
Starting cli
Traceback (most recent call last):
File "/usr/local/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/home/pi/mycroft-core/mycroft/client/text/__main__.py", line 19, in <module>
import curses
File "/usr/local/lib/python3.9/curses/__init__.py", line 13, in <module>
from _curses import *
ModuleNotFoundError: No module named '_curses'
من خلال process_utils.py التي تم إصلاحها ، حصلت على هذه الأخطاء:
Starting cli
Traceback (most recent call last):
File "/usr/local/lib/python3.9/runpy.py", line 188, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/usr/local/lib/python3.9/runpy.py", line 111, in _get_module_details
__import__(pkg_name)
File "/home/pi/mycroft-core/mycroft/__init__.py", line 17, in <module>
from mycroft.api import Api
File "/home/pi/mycroft-core/mycroft/api/__init__.py", line 22, in <module>
from mycroft.configuration import Configuration
File "/home/pi/mycroft-core/mycroft/configuration/__init__.py", line 15, in <module>
from .config import Configuration, LocalConf, RemoteConf
File "/home/pi/mycroft-core/mycroft/configuration/config.py", line 23, in <module>
from mycroft.util.json_helper import load_commented_json, merge_dict
File "/home/pi/mycroft-core/mycroft/util/__init__.py", line 32, in <module>
from .process_utils import (reset_sigint_handler, create_daemon,
File "/home/pi/mycroft-core/mycroft/util/process_utils.py", line 7
<!DOCTYPE html>
هل هناك حل بديل أم يجب إعادة ربط Python بـ 3.7 وإعادة تثبيت mycroft؟
يجب أن تعمل مع بيثون 3.9. لقد نجحت ، في الواقع ، مع Python 3.9. هناك خطأ في المعالجة المتعددة ، وأحتاج إلى قتل المهارات يدويًا بعد إيقاف الخدمات ، لأنها لم تتوقف بشكل صحيح ، لكنها تعمل بالتأكيد.
هل قمت بتثبيت قائمة اللعنات؟ يبدو أنه يشكو منه
يجب أن تعمل مع بيثون 3.9. لقد نجحت ، في الواقع ، مع Python 3.9. هناك خطأ في المعالجة المتعددة ، وأحتاج إلى قتل المهارات يدويًا بعد إيقاف الخدمات ، لأنها لم تتوقف بشكل صحيح ، لكنها تعمل بالتأكيد.
هل ترغب في إجراء 1+ لهذا السلوك. في الواقع ، مع توقف Python 3.9 ، يستغرق إيقاف خدمة مهارات mycroft وقتًا طويلاً (حتى انتهاء الوقت المحدد).
هل جرب أحد فرع الحل البديل الذي ذكرته في الأعلى؟ سيكون من المثير للاهتمام معرفة ما إذا كان ذلك يجعل الأشياء تعمل بشكل أفضل ، أم أنها فقط بالنسبة لي (TM) :)
ليس بنفسي حتى الآن. عندما يخرج إصدار OVOS من الباب ، سأعود إليه.
ليس أنا أيضًا ، هل يمكنني تطبيق هذا فقط أو أحتاج إلى القيام ببعض سحر git (إذا كان بإمكانك إرشادي لاختباره بسهولة دون الحاجة إلى إعادة تثبيت كل شيء ، فسيكون ذلك رائعًا ، وعادة ما أقوم بالاستنساخ والدفع والسحب ، لذا فإن عناصر git الأخرى لا تزال لغزا بالنسبة لي)
نعم هذا هو التغيير الكلي.
يمكنك فقط نسخها ولصقها. أو ما يلي يجب أن يعمل (مكتوب من الذاكرة دون اختبار لذلك قد يكون خطأ)
git checkout -b py39-test
git pull https://github.com/forslund/mycroft-core.git bugfix/mp-workaround
ثم للعودة إلى dev
يمكنك القيام بذلك
git checkout dev
git remote add forslund https://github.com/forslund/mycroft-core.git
git pull forslund
git checkout forslund/bugfix/mp-workaround
وجدت أن هذا أسهل في حالة الاختبار ، وإعطاء الملاحظات ، وتغيير بعض الأشياء مرة أخرى. ثم كل ما عليك القيام به هو
git pull
التعليق الأكثر فائدة
آمل أن يكون لدي قريبًا صورة OVOS منفصلة مع Python 3.9 مرة أخرى لاختبار ذلك. سأرى ما إذا كان بإمكاني إنشاء OVOS-Python3.9 نظيفًا على آلة بناء أخرى (بشكل طفيف). تقرير مرة أخرى في أقرب وقت ممكن.