تثبيت نسخة التطوير من scikit-learn#
يقدم هذا القسم كيفية تثبيت الفرع الرئيسي من scikit-learn. يمكن القيام بذلك إما عن طريق تثبيت نسخة ليلية أو البناء من المصدر.
تثبيت النسخ الليلية#
تقوم خوادم التكامل المستمر لمشروع scikit-learn ببناء واختبار وتحميل حزم wheel لأحدث إصدار من Python على أساس ليلي.
يُعد تثبيت نسخة ليلية أسرع طريقة لـ:
تجربة ميزة جديدة سيتم شحنها في الإصدار التالي (أي ميزة من طلب سحب تم دمجه مؤخرًا في الفرع الرئيسي)؛
التحقق مما إذا كان قد تم إصلاح خطأ واجهته منذ الإصدار الأخير.
يمكنك تثبيت النسخة الليلية من scikit-learn باستخدام فهرس scientific-python-nightly-wheels
من سجل PyPI لـ anaconda.org
:
pip install --pre --extra-index https://pypi.anaconda.org/scientific-python-nightly-wheels/simple scikit-learn
لاحظ أنه قد يلزم إلغاء تثبيت scikit-learn أولاً لتتمكن من تثبيت النسخ الليلية من scikit-learn.
البناء من المصدر#
البناء من المصدر مطلوب للعمل على مساهمة (إصلاح خطأ، ميزة جديدة، تحسين التعليمات البرمجية أو الوثائق).
استخدم Git للتحقق من أحدث مصدر من مستودع scikit-learn على Github.:
git clone git@github.com:scikit-learn/scikit-learn.git # add --depth 1 if your connection is slow cd scikit-learn
إذا كنت تخطط لتقديم طلب سحب، فيجب عليك الاستنساخ من الشوكة الخاصة بك بدلاً من ذلك.
ثبّت إصدارًا حديثًا من Python (3.9 أو أحدث وقت كتابة هذا التقرير) على سبيل المثال باستخدام Miniforge3. يوفر Miniforge توزيعًا قائمًا على conda لـ Python وأكثر المكتبات العلمية شيوعًا.
إذا قمت بتثبيت Python باستخدام conda، فإننا نوصي بإنشاء `بيئة conda`_ مخصصة مع جميع تبعيات البناء الخاصة بـ scikit-learn (أي NumPy و SciPy و Cython و meson-python و Ninja):
conda create -n sklearn-env -c conda-forge python numpy scipy cython meson-python ninja
ليس من الضروري دائمًا ولكن من الأكثر أمانًا فتح موجه أوامر جديد قبل تنشيط بيئة conda المنشأة حديثًا.
conda activate sklearn-env
بديل لـ conda: يمكنك استخدام عمليات تثبيت بديلة لـ Python بشرط أن تكون حديثة بما فيه الكفاية (3.9 أو أعلى وقت كتابة هذا التقرير). فيما يلي مثال حول كيفية إنشاء بيئة بناء لـ Python على نظام Linux. يتم تثبيت تبعيات البناء باستخدام
pip
في virtualenv مخصص لتجنب تعطيل برامج Python الأخرى المثبتة على النظام:python3 -m venv sklearn-env source sklearn-env/bin/activate pip install wheel numpy scipy cython meson-python ninja
ثبّت مترجمًا مع دعم OpenMP لمنصتك. انظر التعليمات الخاصة بـ Windows و macOS و Linux و FreeBSD.
بناء المشروع باستخدام pip:
pip install --editable . \ --verbose --no-build-isolation \ --config-settings editable-verbose=true
تحقق من أن scikit-learn المثبت لديه رقم إصدار ينتهي بـ
.dev0
:python -c "import sklearn; sklearn.show_versions()"
يرجى الرجوع إلى دليل المطورين و أسماء مستعارة وأعلام pytest مفيدة لتشغيل الاختبارات على الوحدة التي تختارها.
ملاحظة
--config-settings editable-verbose=true
اختياري ولكنه موصى به
لتجنب المفاجآت عند استيراد sklearn
. يُنفِّذ meson-python
عمليات التثبيت القابلة للتحرير عن طريق إعادة بناء sklearn
عند تنفيذ import sklearn
.
مع الإعداد الموصى به، سترى رسالة عندما يحدث هذا،
بدلاً من الانتظار المحتمل بدون تغذية مرتدة والتساؤل
عما يستغرق وقتًا طويلاً. مكافأة: هذا يعني أنك تحتاج فقط إلى تشغيل الأمر pip
install
مرة واحدة، سيتم إعادة بناء sklearn
تلقائيًا عند
استيراد sklearn
.
التبعيات#
تبعيات وقت التشغيل#
يتطلب Scikit-learn التبعيات التالية في وقت البناء وفي وقت التشغيل:
Python (>= 3.8)
NumPy (>= 1.19.5)
SciPy (>= 1.6.0)
Joblib (>= 1.2.0)
threadpoolctl (>= 3.1.0).
تبعيات البناء#
يتطلب بناء Scikit-learn أيضًا:
Cython >= 3.0.10
مترجم C/C++ ومكتبة وقت تشغيل OpenMP متوافقة. انظر التعليمات الخاصة بنظام المنصة لمزيد من التفاصيل.
ملاحظة
إذا لم يكن OpenMP مدعومًا من قبل المترجم، فسيتم البناء مع
تعطيل وظائف OpenMP. لا يوصى بذلك لأنه سيجبر
بعض المقدرات على التشغيل في الوضع التسلسلي بدلاً من الاستفادة من التوازي القائم على الخيوط. سيؤدي تعيين متغير البيئة SKLEARN_FAIL_NO_OPENMP
(قبل cythonization) إلى فشل البناء إذا لم يكن OpenMP
مدعومًا.
منذ الإصدار 0.21، يكتشف scikit-learn تلقائيًا ويستخدم مكتبة الجبر الخطي التي يستخدمها SciPy في وقت التشغيل. لذلك ليس لدى Scikit-learn تبعية بناء على تطبيقات BLAS/LAPACK مثل OpenBlas أو Atlas أو Blis أو MKL.
تبعيات الاختبار#
يتطلب تشغيل الاختبارات:
pytest >= 7.1.2
تتطلب بعض الاختبارات أيضًا pandas.
بناء إصدار معين من علامة#
إذا كنت ترغب في بناء إصدار ثابت، يمكنك git checkout <VERSION>
للحصول على التعليمات البرمجية لهذا الإصدار المحدد، أو تنزيل أرشيف مضغوط لـ
الإصدار من github.
تعليمات خاصة بالمنصة#
فيما يلي تعليمات لتثبيت مترجم C/C++ عامل مع دعم OpenMP لبناء ملحقات Cython الخاصة بـ scikit-learn لكل منصة مدعومة.
Windows#
أولاً، قم بتنزيل أدوات البناء لـ Visual Studio 2019 المثبت.
قم بتشغيل ملف vs_buildtools.exe
الذي تم تنزيله، أثناء التثبيت ستحتاج إلى التأكد من تحديد "تطوير سطح المكتب باستخدام C++"، على غرار لقطة الشاشة هذه:

ثانيًا، اكتشف ما إذا كنت تقوم بتشغيل Python 64 بت أو 32 بت. يعتمد أمر البناء على بنية مترجم Python. يمكنك التحقق
من البنية عن طريق تشغيل ما يلي في وحدة تحكم cmd
أو powershell
:
python -c "import struct; print(struct.calcsize('P') * 8)"
بالنسبة لـ Python 64 بت، قم بتكوين بيئة البناء عن طريق تشغيل الأوامر التالية في cmd
أو موجه أوامر Anaconda (إذا كنت تستخدم Anaconda):
SET DISTUTILS_USE_SDK=1
"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
استبدل x64
بـ x86
للبناء لـ Python 32 بت.
يرجى العلم أن المسار أعلاه قد يختلف من مستخدم لآخر. الهدف هو الإشارة إلى ملف "vcvarsall.bat" الذي سيُعيِّن متغيرات البيئة اللازمة في موجه الأوامر الحالي.
أخيرًا، قم ببناء scikit-learn باستخدام موجه الأوامر هذا:
pip install --editable . \
--verbose --no-build-isolation \
--config-settings editable-verbose=true
macOS#
لا يدعم مترجم C الافتراضي على macOS، Apple clang (المُلقَّب بشكل مُربِك باسم
/usr/bin/gcc
)، OpenMP مباشرةً. نقدم بديلين
لتفعيل دعم OpenMP:
إما تثبيت
conda-forge::compilers
باستخدام conda؛أو تثبيت
libomp
باستخدام Homebrew لتوسيع مترجم Apple clang الافتراضي.
بالنسبة لأجهزة Apple Silicon M1، من المعروف أن طريقة conda-forge أدناه فقط هي التي تعمل وقت كتابة هذا التقرير (يناير 2021). يمكنك تثبيت توزيع macos/arm64
لـ conda باستخدام مثبت miniforge
مترجمات macOS من conda-forge#
إذا كنت تستخدم مدير حزم conda (الإصدار >= 4.7)، يمكنك تثبيت
حزمة تعريف compilers
من قناة conda-forge، والتي توفر
مترجمات C/C++ تدعم OpenMP استنادًا إلى سلسلة أدوات llvm.
قم أولاً بتثبيت أدوات سطر أوامر macOS:
xcode-select --install
يوصى باستخدام `بيئة conda`_ مخصصة لـ بناء scikit-learn من المصدر:
conda create -n sklearn-dev -c conda-forge python numpy scipy cython \
joblib threadpoolctl pytest compilers llvm-openmp meson-python ninja
ليس من الضروري دائمًا ولكن من الأكثر أمانًا فتح موجه أوامر جديد قبل تنشيط بيئة conda المنشأة حديثًا.
conda activate sklearn-dev
make clean
pip install --editable . \
--verbose --no-build-isolation \
--config-settings editable-verbose=true
ملاحظة
إذا تلقيت أي رسالة خطأ تتعلق بتعارض التبعيات، فحاول التعليق على
أي تكوين conda مخصص في ملف $HOME/.condarc
. على وجه الخصوص، من المعروف أن التوجيه channel_priority: strict
يسبب
مشاكل لهذا الإعداد.
يمكنك التحقق من تثبيت المترجمات المخصصة بشكل صحيح من conda forge باستخدام الأمر التالي:
conda list
الذي يجب أن يتضمن compilers
و llvm-openmp
.
ستقوم حزمة تعريف المترجمات بتعيين متغيرات بيئة مخصصة تلقائيًا:
echo $CC
echo $CXX
echo $CFLAGS
echo $CXXFLAGS
echo $LDFLAGS
تشير إلى الملفات والمجلدات من بيئة conda sklearn-dev
الخاصة بك
(على وجه الخصوص في مجلدات bin/ و include/ و lib/ الفرعية). على سبيل المثال
-L/path/to/conda/envs/sklearn-dev/lib
يجب أن يظهر في LDFLAGS
.
في السجل، يجب أن ترى الامتداد المترجم الذي يتم بناؤه باستخدام
مترجمي clang و clang++ المثبتين بواسطة conda مع علامة سطر الأوامر -fopenmp
.
مترجمات macOS من Homebrew#
هناك حل آخر وهو تمكين دعم OpenMP لمترجم clang الذي يأتي افتراضيًا على macOS.
قم أولاً بتثبيت أدوات سطر أوامر macOS:
xcode-select --install
ثبّت مدير حزم Homebrew لـ macOS.
ثبّت مكتبة LLVM OpenMP:
brew install libomp
عيِّن متغيرات البيئة التالية:
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
export CPPFLAGS="$CPPFLAGS -Xpreprocessor -fopenmp"
export CFLAGS="$CFLAGS -I/usr/local/opt/libomp/include"
export CXXFLAGS="$CXXFLAGS -I/usr/local/opt/libomp/include"
export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/local/opt/libomp/lib -L/usr/local/opt/libomp/lib -lomp"
أخيرًا، قم ببناء scikit-learn في الوضع المطول (للتحقق من وجود
علامة -fopenmp
في أوامر المترجم):
make clean
pip install --editable . \
--verbose --no-build-isolation \
--config-settings editable-verbose=true
Linux#
مترجمات Linux من النظام#
يتطلب تثبيت scikit-learn من المصدر بدون استخدام conda تثبيت رؤوس تطوير Python الخاصة بـ scikit-learn ومترجم C/C++ عامل مع دعم OpenMP (عادةً سلسلة أدوات GCC).
ثبّت تبعيات البناء لأنظمة التشغيل القائمة على Debian، على سبيل المثال Ubuntu:
sudo apt-get install build-essential python3-dev python3-pip
ثم تابع كالمعتاد:
pip3 install cython
pip3 install --editable . \
--verbose --no-build-isolation \
--config-settings editable-verbose=true
يجب تثبيت Cython والعجلات المترجمة مسبقًا لتبعيات وقت التشغيل (numpy و scipy
و joblib) تلقائيًا في
$HOME/.local/lib/pythonX.Y/site-packages
. بدلاً من ذلك، يمكنك تشغيل
الأوامر أعلاه من virtualenv أو `بيئة conda`_ للحصول على عزل كامل عن حزم Python المثبتة عبر مدير حزم النظام. عند استخدام بيئة معزولة، يجب استبدال pip3
بـ pip
في
الأوامر أعلاه.
عندما لا تتوفر عجلات التبعيات المترجمة مسبقًا لبنيتك (مثل ARM)، يمكنك تثبيت إصدارات النظام:
sudo apt-get install cython3 python3-numpy python3-scipy
على Red Hat والمستنسخات (مثل CentOS)، قم بتثبيت التبعيات باستخدام:
sudo yum -y install gcc gcc-c++ python3-devel numpy scipy
مترجمات Linux من conda-forge#
بدلاً من ذلك، قم بتثبيت إصدار حديث من سلسلة أدوات مترجم GNU C (GCC) في مجلد المستخدم باستخدام conda:
conda create -n sklearn-dev -c conda-forge python numpy scipy cython \
joblib threadpoolctl pytest compilers meson-python ninja
ليس من الضروري دائمًا ولكن من الأكثر أمانًا فتح موجه أوامر جديد قبل تنشيط بيئة conda المنشأة حديثًا.
conda activate sklearn-dev
pip install --editable . \
--verbose --no-build-isolation \
--config-settings editable-verbose=true
FreeBSD#
لا يتضمن مترجم clang المضمن في أنظمة FreeBSD 12.0 و 11.2 الأساسية
دعم OpenMP. تحتاج إلى تثبيت مكتبة openmp
من الحزم
(أو المنافذ):
sudo pkg install openmp
سيؤدي ذلك إلى تثبيت ملفات الرأس في /usr/local/include
والملفات lib في
/usr/local/lib
. نظرًا لأنه لا يتم البحث في هذه الأدلة افتراضيًا، يمكنك
تعيين متغيرات البيئة لهذه المواقع:
export CFLAGS="$CFLAGS -I/usr/local/include"
export CXXFLAGS="$CXXFLAGS -I/usr/local/include"
export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/local/lib -L/usr/local/lib -lomp"
أخيرًا، قم ببناء الحزمة باستخدام الأمر القياسي:
pip install --editable . \
--verbose --no-build-isolation \
--config-settings editable-verbose=true
بالنسبة لإصدارات FreeBSD 12.1 و 11.3 القادمة، سيتم تضمين OpenMP في النظام الأساسي ولن تكون هذه الخطوات ضرورية.