問題タブ [tox]
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.
python - requirements.txt または setup.py が変更されたときに、tox を使用して virtualenv を再インストールします。
以前は、次のような Makefile を手動で使用していました。
これには、requirements_dev.txt または setup.py を変更すると、virtualenv が再構築されるという素晴らしい副作用がありました。でもちょっとゴツい感じ。
私は同様のことをするために使用tox
したいと思います。オプションがあることは理解しtox
ていますが、必要な場合にのみ--recreate
呼び出したいと思います。
私の新しいセットアップは次のようなものです:
と
理想的な解決策は にあるものだけを使用することですtox
が、受け入れ可能な解決策には Makefile と--recreate
フラグが含まれます。
python - tox でのテストは、必ずしもインストールされたコードを使用するとは限りません
tox Web サイトにリストされている最初の機能は、「さまざまな Python バージョンとインタープリターでパッケージが正しくインストールされていることを確認する」です。これにより、setup.py を台無しにすると、テストが通らなくなり、setup.py が悪くなったという事実が警告されると思います。
そうではありません。モジュールまたはパッケージを tox.ini と同じディレクトリに配置するという通常のパターンに従うと、実際にはコードがローカル ディレクトリ (別名 {toxinidir}) からインポートされます。これは、setup.py をまったく何も行わなくてもよいことを意味し、tox は問題がないことを通知します。その時点で、pypi にプッシュして使用してみるまで、問題に気付かないのは非常に簡単です。これは、tox で防止したい種類の問題です。
主な問題は、テスト中に空の文字列が sys.path に表示されることです。Python はこれを現在の作業ディレクトリを意味すると解釈し、そこからインポートします。
テスト中にローカル ディレクトリが使用されないように tox を構成する方法はありますか?
現在、私の回避策は ですがcd {envtmpdir} && coverage run && mv .coverage {toxinidir}
、これは明らかに醜いハックです。
ここでは、コードの 2 つのバージョンを示します。
私の目標は、上記の問題を回避し、すべてのプロジェクトでの使用を推奨するのに十分合理的な tox 構成を見つけることです。
python - tox 環境内で pip install コマンドの https プロキシをセットアップする
tox環境内でpip install コマンドのhttps プロキシをセットアップする必要があります。
現在、私は次のようなものを持っています:
次のようなpipコマンドのみを使用する場合:
プロキシの背後にいるため、エラーが発生します。
だから私はこのようなことをし、それはシャルムのように機能します:
しかし、問題は、プロキシをpip install コマンドに対してのみセットアップする必要があり、他のコマンド ( command1、command2、...)に対してはhttps_proxyを設定解除する必要があることです。
したがって、問題は、pip install コマンドの https_proxy を tox でのみ設定し、他のすべてのコマンドには設定しないようにする方法です。
Ps このようなことをしてもうまくいきません:
Pss pip --proxyオプションも、 http_proxyのみを設定するため、役に立ちません。
よろしくお願いします!
python - 別の tox プロジェクト フォルダーを tox プロジェクトの依存関係として指定する方法
別の tox プロジェクト (「ライブラリ」プロジェクトと呼びましょう) に依存する tox 対応プロジェクト (「メイン」プロジェクトと呼びましょう) があります。これはすべて、大規模な包括的なプロジェクトの一部であるため、1 つのリポジトリに統合されています。
通常のユーザー向けのプロジェクトの仕組み
エンドユーザーとしての通常のインストールでは、最初に「ライブラリ」をインストールし、次に「メイン」をリポジトリまたは任意のソースから直接インストールしてから実行します。
tox に関する問題
ただし、開発者としての状況は異なります。"tox" は機能するはずであり、同時に複数のバージョンを使用したい場合があるためです。
通常、大規模な包括的なリポジトリをチェックアウトすると、ファイルシステムのレイアウトは次のようになります。
main/ に移動して「tox」と入力すると、次のようになります。
現在の動作:「ライブラリ」に依存する「メイン」プロジェクトをビルドしようとします。これは明らかに、pip から「ライブラリ」を取得しようとする結果になります。ただし、プロジェクトはまだリリースされていないため (したがって pip ではありません)、lib が同じリポジトリにあるにもかかわらず、機能しません。
結果:うまくいきません。
回避策 1:独自のパッケージ インデックスを設定するか、ユーザーにそれを依頼することができます。ただし、単体テストを実行できるようにするためだけに、プロジェクトに貢献しているすべての人に DevPI などでそれを行うように依頼するのはあまり良い考えではないように思われるため、集中的に行う必要があります。
しかし、中心的な場所でパッケージ インデックスを提供したり、"ライブラリ" の pip パッケージを提供したりすると、自分で作成した "ライブラリ" の変更されたバージョンが関与して、"メイン" のテストを簡単に実行できなくなります。
結局、「ライブラリ」は同じリポジトリにあるため、ある時点で変更することもできます。
「メイン」プロジェクト フォルダ内に「tox」と入力しても、現在の隣接する「ライブラリ」バージョンを簡単に見つけることはできませんが、事前にパッケージ化されたオンラインのものだけが正確に直感的ではありません。
回避策 2: sitepackages=True を試し、システムに「ライブラリ」をインストールしましたが、sitepackages=True はかなりの問題を引き起こし、一般的には良い考えではないようです。
望ましい動作: tox に、そのフォルダー内の "ライブラリ" のローカル バージョンを使用してもらいたいと考えています。
そのバージョンは新しいか、ローカルで変更されている可能性があるため、これは明らかに開発者ユーザーが使用したいものです。そして、それは存在しますが、現在 pip パッケージについては言えません。
単一のプロジェクトだけでなく、サブプロジェクト (「メイン」、「ライブラリ」など) を含む包括的なリポジトリが必要なのはなぜですか?
私たちは、さまざまな目的のために多くのデーモンを備えたマルチデーモンの大規模プロジェクトを開発し、いくつかのライブラリで共有コードを使用して、大学のコース管理システムを形成します (これは、フォーラム、物を渡す可能性のあるコース管理、学生プロジェクト用の付属コード バージョン管理システムを処理します)等。)。
デーモンのサブセットのみを使用することは可能であるため、それらが別々のプロジェクトであることは理にかなっていますが、それでもほとんどの人がそれらのほとんどを持ちたいと思うほど十分に接続されているため、それらすべてが 1 つのリポジトリにあります。
ライブラリ自体も、まったく異なるプロジェクトで使用するのに適していますが、通常、最初は私たちのプロジェクトで使用されるため、リポジトリに詰め込まれています。つまり、指定された相対パスに常にあることを意味しますが、別の tox.ini と単体テストがあります。
TL;DR / まとめ
では、プロジェクトをインストールするときに pip だけでなく、tox が別の toxable プロジェクト フォルダーで特定の依存関係を探すようにするにはどうすればよいでしょうか?
もちろん、「メイン」の通常の setup.py インストール プロセスは、tox やローカル ディスクの検索をいじってはいけません。特定の相対パスを 1 つだけチェックし、それが存在しない場合は諦めます (そしてフォールバックします)。ピップまたは何でも)。
そのため、相対パスを何らかの方法で tox.ini に保存できれば最高です。
それとも、これはすべてかなり悪い考えですか?これを別の方法で解決して、ローカル リポジトリに存在する「ライブラリ」の最新のローカル開発バージョンで「メイン」プロジェクトを簡単に toxable にする必要がありますか?
python - setup.py で関数を呼び出す (tox を使用)
setup.py
別のファイルで関数を呼び出す必要があります。cmdclass
これは、次のような設定で実行できることを知っています。
しかし、私はtoxを使用しています。これは、からのインポートを受け入れないようですsetup.py
(モジュールが見つからないというだけです)。tox を実行するには、tox.ini
代わりにこれを入れます:
そしてそれはそれをうまく実行します。
問題
setup.py
tox が文句を言わずに自分の関数を呼び出すにはどうすればよいですか?
python - 現在のユーザーとして tox をインストールするには?
現在のユーザーとして tox をインストールする際に問題があるようです:
私は apip install --user tox
を実行しましたが、この場合tox
はコマンドがインストールされてpython -m tox
おらず、tox を介してモジュールを実行する通常のトリックは機能しません。
python - Python から pypi を使用して依存関係バージョンのテストを含める方法は?
pypi からの依存関係のリストを持つ python モジュールがあり、新しい依存関係に対してテストしたいので、依存関係に加えられた変更がいつモジュールを壊すかを発見することができます。
例requirements.txt
PyPiにこれらのバージョンがあるとしましょう
これに基づいて、少なくともこれらの組み合わせに対してテストが実行されることを期待しています。
この種のマトリックス テストを行うことで、問題を非常に迅速に特定できるはずです。
この機能を取得するにはどうすればよいですか? 誰かがそのようなことを実装しましたか?
現在、私は Travis CI、tox、py.test を使用しており、3 つのバージョンの python に対して実行しています。
python - Python with tox. 1 つの依存関係のみに install_command をセットアップする方法
こんにちは、Tox を使用してテスト環境をセットアップしようとしています。
私が解決したい問題は何ですか?
異なるネットワーク設定(異なるIP、異なるインターフェース名など)でテストを実行しているサーバーがほとんどないため、すべての構成を持つモジュールを準備し、サーバー番号を使用してインストールします。
このように、私の環境では構成が1つしかなく、実際のサーバーテストが実行されていることを知らなくてもテストにインポートできます。
現在、tox を使用して仮想環境をセットアップしようとしていますが、1 つの依存関係に対してのみ特定の install_command を定義する方法がわからないため、問題がありますか? それが可能かどうかさえわかりません。
助けてくれてありがとう
BR クシシュトフ