問題タブ [python-poetry]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
django - Python 依存関係の複数のバージョンのテストをサポートするために、tox と詩を連携させるにはどうすればよいですか?
現在、違いを確認するためのテストとして使用pipenv
しているプロジェクトを切り替えています。poetry
このプロジェクトは、シンプルで再配布可能な Django アプリです。Python 3.6-8、Django 2.2 および 3.0 をサポートしています。tox.ini
したがって、Python と Django のすべての組み合わせをカバーするファイルがあります。
私が抱えている問題(これはpipenv
世界には存在しません)は、poetry install
ステートメントが常にdeps
セクションにあるものをpoetry.lock
ファイルにあるもので上書きすることです(存在しない場合は自動生成されます)。これは、各 tox virtualenv がデフォルトで Django 3.0 をインストールするため、テスト マトリックスが Django 2.2 に対してテストしないことを意味します。
これがどのように機能するのかわかりません-インストールpoetry
先の既存の環境を尊重して依存関係をインストールする必要がありますか?
では、私の質問は、依存関係マネージャーとして詩を使用して、マルチバージョンの tox (または travis) テスト マトリックスをどのように設定すればよいかということです。
私pyproject.toml
は Python / Django のバージョンを次のように定義しています:
生成されたpoetry.lock
ファイル (コミットされていない) には、次の Django バージョン情報が含まれています。
更新: きれいな tox 出力を含めます
これは、ロック ファイルを削除し、tox 環境を再作成した結果です。ご覧のとおり、tox はDjango==2.2
virtualenv の依存関係としてインストールされますが、インストール時にpoetry
これを更新3.0
します。
既存のパッケージのインストールを考慮して、詩のインストールを実行するソリューションが必要です。つまり、pyproject.toml
状態Django = "^2.2 || ^3.0"
で、2.2 が既にインストールされている場合は、そのバージョンに固定します。アップグレードを試みないでください。
更新 2
以下のシノロックの指示に従います - tox ファイルを更新して、削除skip_dist
して含めるようにしisolated_build
ました。これはうまくいきます。pytest
tox はパッケージをビルドしてインストールしますが、含まれていない非開発バージョンとcoverage
、後で含めたい多くの linting ツールのみです。つまり、tox を介して実行したいツールは、詩の dev-dependencies として指定されています。これらすべてをtoxファイルに含めるという解決策があります-しかし、それは自滅的なようです-私は詩とtoxの両方が依存関係を宣言しているためです。
更新 3: 解決策