xhtml2pdf خطأ في الاستيراد - جانغو
سؤال
أنا ركبت xhtml2pdf
استخدام pip
للاستخدام مع جانغو.أحصل على خطأ الاستيراد التالي:
Reportlab Toolkit Version 2.2 or higher needed
ولكن لدي Reportlab 3.0
>>> import reportlab
>>> print reportlab.Version
3.0
لقد وجدت كتلة محاولة الالتقاط هذه في ملف __init__.py
ل xhtml2pdf
:
REQUIRED_INFO = """
****************************************************
IMPORT ERROR!
%s
****************************************************
The following Python packages are required for PISA:
- Reportlab Toolkit >= 2.2 <http://www.reportlab.org/>
- HTML5lib >= 0.11.1 <http://code.google.com/p/html5lib/>
Optional packages:
- pyPDF <http://pybrary.net/pyPdf/>
- PIL <http://www.pythonware.com/products/pil/>
""".lstrip()
log = logging.getLogger(__name__)
try:
from xhtml2pdf.util import REPORTLAB22
if not REPORTLAB22:
raise ImportError, "Reportlab Toolkit Version 2.2 or higher needed"
except ImportError, e:
import sys
sys.stderr.write(REQUIRED_INFO % e)
log.error(REQUIRED_INFO % e)
raise
هناك أيضًا خطأ آخر في util.py
:
if not (reportlab.Version[0] == "2" and reportlab.Version[2] >= "1"):
ألا ينبغي أن يقرأ شيئًا مثل:
if not (reportlab.Version[:3] >="2.1"):
ما يعطي؟
المحلول
في util.py
تحرير الأسطر التالية:
if not (reportlab.Version[0] == "2" and reportlab.Version[2] >= "1"):
raise ImportError("Reportlab Version 2.1+ is needed!")
REPORTLAB22 = (reportlab.Version[0] == "2" and reportlab.Version[2] >= "2")
وتعيين على:
if not (reportlab.Version[:3] >="2.1"):
raise ImportError("Reportlab Version 2.1+ is needed!")
REPORTLAB22 = (reportlab.Version[:3] >="2.1")
يحرر
بينما يعمل ما سبق فإنه لا يزال يستخدم سلسلة حرفية للتحقق من الإصدار.هناك طلب سحب في xhtml2pdf
المشروع بحل أكثر أناقة يقارن الإصدارات باستخدام مجموعات من الأعداد الصحيحة.وهذا هو الحل المقترح:
_reportlab_version = tuple(map(int, reportlab.Version.split('.')))
if _reportlab_version < (2,1):
raise ImportError("Reportlab Version 2.1+ is needed!")
REPORTLAB22 = _reportlab_version >= (2, 2)
لا تنتمي إلى StackOverflow