1

独自の要件ファイルを持つ python プロジェクトがあります。プロジェクトには独自の virtualenv もあり、パッケージの 1 つが「pyPdf」です。ライブラリにはバグがあり、バグを修正するパッチを書きました。

--- venv/local/lib/python2.7/site-packages/pyPdf/pdf.py 2014-07-17 17:04:57.000000000 +0530
+++ pypdf_fixer.py  2014-07-19 01:19:53.176877332 +0530
@@ -1726,7 +1726,10 @@
     m.update(p_entry)
     # 5. Pass the first element of the file's file identifier array to the MD5
     # hash function.
-    m.update(id1_entry)
+    if isinstance(id1_entry, str):
+        m.update(id1_entry)
+    else:
+        m.update(id1_entry.original_bytes)
     # 6. (Revision 3 or greater) If document metadata is not being encrypted,
     # pass 4 bytes with the value 0xFFFFFFFF to the MD5 hash function.
     if rev >= 3 and not metadata_encrypt:

このファイルを pypdf.patch と呼びましょう。Linux patch コマンドを使用してパッチを実行します。

$ patch venv/local/lib/python2.7/site-packages/pyPdf/pdf.py < pypdf.patch

Idempotent プロパティを使用して 2 つのことを行うには、bash スクリプトを作成する必要があります (つまり、スクリプトを複数回実行することは、1 回実行することと同じである必要があります)。

1)さまざまなライブラリ要件(git + ssh要件を含むFlask == 0.10.1など)を含む要件ファイルを実行し、すべてのライブラリに対してpipインストールを実行します。

2) pypdf ライブラリにパッチを適用します。

この面でのリードに感謝します。「冪等性」に注意してください。

PS: 私の requirements.txt ファイルは次のようになります (ライブラリをインストールするために、virtualenv の下で pip install - r requirements.txt を実行します)。

Flask==0.10.1
Jinja2==2.7.3
...
pyPdf==1.13
git+ssh://git@something.co.uk/some-production-library.git

ありがとう

4

1 に答える 1