2

私のパッケージは、jsonpickle パッケージの最新バージョンに依存しています。古いバージョンは pip 経由でインストールできますが、動作させるには最新バージョン (Github など) が必要です。この状況で、最新バージョンの jsonpickle をコードにバンドルすることは一般的に問題ないと考えられますか? 他の解決策はありますか?ユーザーに github からクローンを作成しないように依頼したくありません。

パッケージを次のように整理することを考えています。

My package
    |
__init__.py
 file1.py
 file2.py
          \
        jsonpickle (latest)

つまり、ここで行われたことを実行します: Python: サブパッケージまたはサブモジュールのインポート

4

2 に答える 2

3

kag が言うように、これは一般的には良い考えではありません。他のパッケージに不親切であるとして「眉をひそめている」ということではなく、あなたとあなたのユーザーにメンテナンスの負担を引き起こしているということです。(あなたのユーザーに影響を与えるバグが に修正されていると想像してjsonpickleください。しかし、あなたはまだ修正を適用していません。通常どおりに作業を行っていれば、彼らがしjsonpickleなければならないことは upgrade だけですが、内部コピーの場合、jsonpickleソースとあなたのものをダウンロードし、パッケージをハックして、すべて手動でインストールする必要があります。)

時には、それでもやる価値があります。たとえば、非常に人気のあるrequestsモジュールには、 のような他のパッケージの独自のコピーurllib3が含まれています。そして、はい、上記の両方のコストに直面しています。しかし、これは、 の各バージョンがrequestの正確な特定のバージョンに依存できることも意味しurllib3ます。requestsのめったに使用されないインターフェイスを多用urllib3し、既知のバグのいくつかに対する回避策さえ備えているため、これは価値があります。

あなたの場合、それは問題のようには聞こえません。jsonpickleアップストリームのメンテナーが新しいバージョンを PyPI にアップロードするまで、一時的に最先端のバージョンが必要です。問題は、ユーザー全員に異なるバージョンを持たせたくないということではありません。レポをクローンして手動でインストールする方法を理解するよう強制したくないということです。幸いなことに、pipほとんどの問題を 1 行にまとめることで、それを処理してくれます。

pip install git+https://github.com/foo/bar

それは美しい解決策ではありませんが、一時的なものですよね?

于 2013-08-17T02:14:17.260 に答える