سؤال

لقد بدأت مشروعًا صغيرًا/متوسطًا بيثون، على الأرجح في التطوير القائم على الاختبار.خلفياتي موجودة في لغة C وjava أكثر من لغة python (استخدمت ant وmakefile)

أعلم أنك قد لا تحتاج إلى أداة بناء في python، لكنني سأفعل ذلك، لأنني سأستخدم cython وPyInstaller (يجب أن يعمل الشيء على نظامين مختلفين من UNIX، دون الاعتماد مباشرة على python) وأريد الراحة اختيار نموذج الاختبارات CLI، وبناء المستندات، وربما التحقق من التبعيات، وما إلى ذلك.

شخص ما يشكو من أن بايثون تفتقر إلى أداة تشبه الصنع.أعلم أن هناك عددًا قليلاً من الأدوات، مثل سكون و رصف, ، ولكن أود أن أسمع من المستخدمين الحقيقيين، وليس فقط موقعهم على الانترنت.هل يستخدم أحد رصف?

ماذا عن setup.py المعتاد الذي يأتي مع العديد من الحزم؟لقد بحثت في عدد قليل لمعرفة ما إذا كان هناك استخدام شائع، لكنني لم أجد أي شيء مثير للاهتمام (ربما استخدمت الأمثلة الخاطئة)

هل تنصح بالالتزام بالأشياء التي أعرفها بالفعل (ant وMakefile) للبدء على الأقل؟إذا كان الأمر كذلك، فهل هناك أي امتداد Ant توصي به لبيثون (+cython+pyinstaller+pyUnit)؟


يحرر:لتجنب المزيد من الإجابات مثل إجابات jwp، لاحظ أنه بالنسبة لهذا المشروع، أحتاج بشدة إلى أن يكون برنامجي مستقلاً وقابلاً للتنفيذ لأنه مطلقًا مستحيل أن يكون لديك python VM على النظام الأساسي المستهدف حيث سيتم تشغيل الملف القابل للتنفيذ.لدي بالضبط نفس الأدوات المتاحة للتجميع، لذا لحسن الحظ لست بحاجة إلى التجميع المتبادل (لكنني سأقوم بالتطوير على نظام Linux أكثر ملاءمة).

أود أيضًا اختبار ما إذا كانت التعليمات البرمجية الخاصة بي قد تم تجميعها في Cython من البداية، وليس لتحسينها قبل الأوان، ولكن فقط للتأكد من أنني لن أبالغ في استخدام الميزات غير المتوافقة، الأمر الذي قد يتطلب إعادة هيكلة مؤلمة إذا كان Cython ستكون هناك حاجة جدية.

لذا يرجى التركيز على سؤالي الفعلي

هل كانت مفيدة؟

المحلول

وتشير المتطلبات الخاصة بك بدلا Scons التي، وفقا لموقعه على الانترنت، لديها المزيد من السيطرة على مجموعة متنوعة من المهام بناء من رصف . في الأخير سوف ينتهي بك الأمر باستخدام الكثير من sh() التي تدير برامج سطر الأوامر العادية.

ومؤخرا، بدأت باستخدام رصف وهو أمر عظيم حقا لتشغيل الاختبارات، وبناء الوثائق مع أبو الهول ، ولكن يمكنني استخدام بايثون فقط النقي. إذا كنت تريد أن ترى ما هو ممكن مع رصف أنا أوصي هاتين المادتين 2: تحويل-من-جعل لرصف الكتابة-technical- وثائق من قبل دوغ هيلمان وتريد بالتأكيد للتأكد من له pavement.py ملف التكوين .

نصائح أخرى

إذا كان ذلك ممكنًا، أقترح تجنب وحدات الامتداد (C/cython) في البداية.احصل على كل التعليمات البرمجية الخاصة بك مكتوبة بلغة Python، استخدم رمزًا بسيطًا distutils التكوين القائم، قم بتشغيل الاختبارات الخاصة بك باستخدام -m (python -m mypkg.test.testall, ، أو أيا كان؛يستورد unittest).

بمجرد وصول مشروعك إلى حالة مريحة، ابدأ في معالجة بعض التحسينات باستخدام cython وإدارة المشروع الإضافية التي تأتي مع ذلك.يمكن لـ distutils إنشاء وحدات ملحقة، لذلك لست متأكدًا من أنك ستحتاج إلى make/scons..

 project-dir/
  setup.py
  mypkg/
   __init__.py
   mymod.py
   test/
    __init__.py
    testall.py
    testsomething_specific.py

ولقد تم استخدام setuptools للحصول على هذا، وأحيانا في تركيبة مع النملة لأكثر تعقيدا الاشياء، أو للاندماج مع يبني البعض. في عام عملت بشكل جيد بالنسبة لي، ولكن سمعت بعض الناس في #python (فرينود) يشكو منخفضة عموما جودة المصدر لهذه الحزمة، والتوصية المعيار <لأ href = "HTTP: //docs.python. غزاله / distutils / "يختلط =" نوفولو noreferrer "> distutils .

وشيء واحد لمشاهدة حقا مع إذا كنت تستخدم لجافا (مثلي)، هو أن الثعبان لا يدعم حزم الانقسام. وهذا هو، لا يمكنك وضع site.db في SRC / الموقع / ديسيبل، site.view في src2 / الموقع / الرأي، وضع SRC وsrc2 على PYTHONPATH ونتوقع كل شيء في العمل. يحدث هذا الصداع الرئيسية بالنسبة لي مع أدوات البناء، لأنها عملت بشكل متقطع قليلا:)

إحدى الأدوات التي أحبها هي virtualenv: http://pypi.python.org/pypi/virtualenv

من الموقع:ما يفعله VirtualEnv هو أداة لإنشاء بيئات بيثون معزولة.المشكلة الأساسية التي تتم معالجتها هي مشكلة التبعيات والإصدارات والأذونات بشكل غير مباشر.تخيل أن لديك تطبيقًا يحتاج إلى الإصدار 1 من LibFoo، ولكن تطبيقًا آخر يتطلب الإصدار 2.كيف يمكنك استخدام هذين التطبيقين؟إذا قمت بتثبيت كل شيء في /usr/lib/python2.4/site-packages (أو أيًا كان الموقع القياسي للنظام الأساسي الخاص بك)، فمن السهل أن ينتهي بك الأمر في موقف تقوم فيه عن غير قصد بترقية تطبيق لا ينبغي ترقيته.

يمكنك أيضًا تجربة: http://pypi.python.org/pypi/zc.buildout

من الموقع:يوفر مشروع Buildout الدعم لإنشاء التطبيقات، وخاصة تطبيقات Python.يوفر أدوات لتجميع التطبيقات من أجزاء متعددة، بيثون أو غير ذلك.قد يحتوي التطبيق بالفعل على برامج وعمليات وإعدادات تكوين متعددة.

لقد قمت بتجربتها عدة مرات، وهي ممتازة لنشر بيئات التطوير، وربما تكون أكثر من اللازم بالنسبة لاحتياجاتك.

لقد قيل لي أيضًا وقرأت في عدة أماكن أن الأنف هو أداة اختبار رائعة جدًاhttp://somethingaboutorange.com/mrl/projects/nose/0.11.1/, ، أبحث عن بعض وقت الفراغ لتجربته.

آمل أن يساعد في الهتاف ، البيرة

لتجنب المزيد من الإجابات مثل إجابات jwp، لاحظ أنه بالنسبة لهذا المشروع، أحتاج بشدة إلى أن يكون برنامجي برنامجًا مستقلاً قابلاً للتنفيذ لأنه من المستحيل تمامًا أن يكون لدي python VM على النظام الأساسي المستهدف حيث سيتم تشغيل الملف القابل للتنفيذ.لدي بالضبط نفس الأدوات المتاحة للتجميع، لذا لحسن الحظ لست بحاجة إلى التجميع المتبادل (لكنني سأقوم بالتطوير على نظام Linux أكثر ملاءمة).

أود أيضًا اختبار ما إذا كانت التعليمات البرمجية الخاصة بي قد تم تجميعها في Cython من البداية، وليس لتحسينها قبل الأوان، ولكن فقط للتأكد من أنني لن أبالغ في استخدام الميزات غير المتوافقة، الأمر الذي قد يتطلب إعادة هيكلة مؤلمة إذا كان Cython ستكون هناك حاجة جدية.

إذا كان كل ما تبحث عنه هو أن يكون لديك ملف قابل للتنفيذ مستقل، فلن تحتاج إلى تشغيل Cython.هناك عدد قليل من المكتبات الجيدة للقيام بذلك:

ومع ذلك، لتشغيل كود بايثون، ما عليك سوى القيام بذلك يجب أن تثبيت مترجم فوري أو جهاز افتراضي على الجهاز المستهدف بشكل أو بطريقة ما.تتضمن الحلول التي قدمتها مجرد تضمين المترجم لتسهيل تثبيته.في الواقع، أنا متأكد تمامًا (ولكن قد أكون مخطئًا) أن Cython لن يسمح لك بإنشاء ملفات تنفيذية مستقلة.إنه مخصص بشكل أساسي لإنشاء امتدادات لمترجم Python.

ومع ذلك، هناك بضعة بدائل أخرى.إذا كان لديك مترجم Java على الجهاز المستهدف، فيمكنك تشغيله جيثون.هناك أيضا أيرون بايثون ل. صافي.ومع ذلك، لا يزال يتعين عليك توزيع أوقات التشغيل لهذه اللغات مع مشروعك.

باختصار، إذا كنت تريد ملفًا مستقلاً قابلاً للتنفيذ دون أي تبعيات، فإن خيارك الوحيد هو استخدام لغة C أو C++ المباشرة.

إذا كنت تبحث عن أداة بناء الثعبان البسيط القائم. تحقق من pynt . المهام في pynt هي مجرد وظيفة (زينت) الثعبان. كما دعم المعلمة أسلوب الخليع عابرة إلى المهام.

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