문제

설치했습니다 xhtml2pdf 사용하여 pip Django와 함께 사용합니다.다음 ImportError가 발생합니다.

Reportlab Toolkit Version 2.2 or higher needed

하지만 나는 Reportlab 3.0을 가지고 있습니다.

>>> import reportlab
>>> print reportlab.Version                                                                                                                                                                                                                 
3.0

나는이 try catch 블록을 발견했습니다. __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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top