XHTML2PDF ImportError - Django.
質問
Djangoで使用するためのxhtml2pdf
を使用してpip
をインストールしました。次のImportErrorを取得しています。
Reportlab Toolkit Version 2.2 or higher needed
.
しかし私は報告書3.0
を持っています>>> import reportlab
>>> print reportlab.Version
3.0
.
私はこれを__init__.py
のxhtml2pdf
にあるTry Catchブロックを見つけました:
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