سؤال

لدي مثل هذا الهيكل:

setup.py
package
    __init__.py
    sub_package
        ___init__.py
    sub_package2
        __init__.py

إذا قمت بتثبيت الحزمة عبر تثبيت setup.py ، فإنه يعمل كما هو موضع تقدير (عن طريق نسخ حزمة كاملة إلى حزم الموقع DIR):

site_packages
    package
        sub_package
        sub_package2

ولكن إذا قمت بتشغيل حزمة تثبيت PIP ، فإن PIP يقوم بتثبيت كل حزمة فرعية كحزمة مستقلة:

site-packages
    package
    sub_package
    sub_package2

كيف يمكنني تجنب ذلك؟ يمكنني استخدام find_packages () من setuptools لتحديد الحزم.

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

المحلول

ملاحظة: هذه الإجابة غير صالحة بعد الآن ، يتم الاحتفاظ بها فقط لأسباب تاريخية ، الإجابة الصحيحة الآن هي استخدام setuptools ، مزيد من المعلومات https://mail.python.org/pipermail/distutils-sig/2013-march/020126.html


بادئ ذي بدء ، سأوصي بإسقاط setuptools:

alt text

واستخدام أيضًا distutils (وهو آلية قياسية لتوزيع حزم بيثون) أو نشر لديك أيضا distutils2 لكنني أعتقد أنه ليس جاهزًا بعد ، وبالنسبة للمعايير الجديدة هنا هو خط دليل لكيفية كتابة setup.py.

لمشكلتك find_packages() لا توجد في distutils وسيتعين عليك إضافة الحزمة الخاصة بك مثل هذا:

setup(name='package',
      version='0.0dev1',
      description='blalal',
      author='me',
      packages=['package', 'package.sub_package', 'package.sub_package2'])

وإذا كان لديك الكثير من الحزم والحزم الفرعية ، فسيتعين عليك إنشاء بعض التعليمات البرمجية التي تنشئ قائمة الحزم هنا هو مثال من مصدر Django.

أعتقد أن استخدام distutils يمكن أن يساعدك في مشكلتك، وآمل أن يساعد هذا :)

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