إجبار تفريغ بعض أدلة البيض
-
21-09-2019 - |
سؤال
لديّ توزيع بيض لتطبيق PYQT الذي أبنيه بنفسي ، ويحتوي على وثائق تم إنشاؤها بواسطة sphinx. عندما أقوم باستدعاء ملف المساعدة من التطبيق ، فإنه يفتح index.html sphinx في نافذة qtwebkit.qwebview. على ما يبدو ، يتم استخراج ملف index.html فقط من البيضة في دليل البيض لنظام التشغيل (على سبيل المثال [..] data python-eggs تحت Windows).
ينتج عن هذا CSS المكسور ، والصور المكسورة ، والروابط المكسورة ، لأن هذه الملفات الأخرى لا يبدو أنها تفريغ ؛ فهي موجودة في ملف البيض ، ولكن ليس في دليل البيض.
نسيت شيئا ما هنا؟ هل هناك طريقة لفرض تفريغ جميع HTML و CSS وملف الصورة على الفور؟
المحلول
أرى أنك قد وجدت بالفعل طريقة أخرى للقيام بذلك ، ولكن للرجوع إليها في المستقبل ، إليك الطريقة غير الوظيفية للقيام بذلك تلقائيًا ، من الوثائق في http://peak.telecommunity.com/devcenter/setuptools#automatic-resource-extraction تم اضافة التأكيدات]:
إذا كنت تستخدم أدوات تتوقع أن تكون مواردك "ملفات حقيقية" ، أو يتضمن مشروعك المكتبات الأصلية غير الممتدة أو غيرها لإعداد () ، بحيث يتم استخراج الملفات معًا
لذلك ، في هذه الحالة ، ما تريد القيام به هو:
eager_resources=['doc/sphinx/build/html', 'doc/sphinx/build/html/index.html']
في setup.py ، والذي سيؤدي إلى استخراج دليل "HTML" بشكل متكرر عندما تطلب الفهرس. html (على افتراض أن "المستند" في مثالك عبارة عن حزمة من المستوى الأعلى).
(يمكنك معرفة المزيد عن eager_resources
الكلمة الرئيسية في المستندات في http://peak.telecommunity.com/devcenter/setuptools#new-and-changed-setup-keywords)
نصائح أخرى
def get_help_url(self):
from pkg_resources import resource_filename
from doc import sphinx
import os
from PyQt4.QtCore import QUrl
html_path = resource_filename(sphinx.__name__, os.path.join('build', 'html'))
return QUrl(os.path.join(html_path, 'index.html'))
بدلاً من
html = resource_filename(sphinx.__name__, os.path.join('build', 'html', 'index.html'))
return QUrl(html)
هل الحيلة
السبب المحتمل: لا يتم تضمين جميع الملفات في البيض في المقام الأول.
تحقق من ذلك عن طريق فك. egg (قد تحتاج إلى إعادة تسميته إلى ملف .zip لذلك على Windows). تحقق مما إذا كانت جميع المحتويات موجودة.
انظر إلى كيف صنعت البيضة. هل تستخدم ملفًا من البيان. إذا لم يكن الأمر كذلك ، فمن المحتمل أن تكون تثق في إدراج ملفات Subversion التلقائية لـ Setuptools. جميع ملفات Subversion'ed تنتهي تلقائيًا في البيض ، لا تفعل ملفات Python ، والباقي لا.
من المحتمل أن يتم إنشاء وثائق sphinx ، لذلك لا يتم تنفيذها ، لذلك لا يتم تضمينها تلقائيًا.
حلان:
استخدم ملفًا mansest.in لتحديد (Bildcards تعمل بشكل يدوي) جميع الملفات التي يجب تضمينها. فشال آمن طالما أنك اكتملت.
أو حدد ملفات HTML كـ Package_Data ، انظر كيف تقرر Setuptools الملفات التي يجب الاحتفاظ بها لـ SDIST/BDIST؟