xhtml2pdf ImportError - Django
Ich installiert xhtml2pdf
mit pip
für die Verwendung mit Django. Ich erhalte die folgende ImportError:
Reportlab Toolkit Version 2.2 or higher needed
Aber ich habe reportlab 3.0
>>> import reportlab
>>> print reportlab.Version
3.0
Fand ich dieses try-catch-block in der __init__.py
von 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
Es gibt auch noch ein Fehler in der util.py
:
if not (reportlab.Version[0] == "2" and reportlab.Version[2] >= "1"):
Sollte das nicht Lesen, so etwas wie:
if not (reportlab.Version[:3] >="2.1"):
Was gibt?
- Sie verwenden möglicherweise eine ältere version innerhalb einer virtualenv ?
- NÖ. Ich habe es installiert in meinem virtualenv. Auch die Ausgabe in der Konsole oben ist aus meiner virtualenv. Ich habe nur eine virtualenv für meinen Django-Projekte mit der neuesten version von
reportlab
installiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
util.py
Bearbeiten Sie die folgenden Zeilen:Und festgelegt:
BEARBEITEN
Während die oben funktioniert es immer noch verwendet die string-Literale für die version überprüfen. Es gibt einen pull-request in der
xhtml2pdf
Projekt mit eine elegantere Lösung, vergleicht Versionen mit Tupeln von ganzen zahlen. Dies ist die vorgeschlagene Lösung:/home/<YOUR_USER_NAME>/.virtualenvs/<YOUR_VIRTUAL_ENV_NAME>/lib/python2.7/site-packages/sx/pisa3/pisa_util.py
bei der Verwendung von virtualenv auf Linux.$VIRTUAL_ENV/lib/python2.7/site-packages/sx/pisa3/pisa_util.py
,$VIRTUAL_ENV/lib/python3.5/site-packages/sx/pisa3/pisa_util.py
. Falls Ihr die python-version ist nicht gleich ändere es einfach.