GNU/Linux >> Linux の 問題 >  >> Linux

別のバージョンの python で実行されている pytest

結論:実行

  • python -m pytest 、または
  • py.test-<version> 代替の Python と pytest の場合 システム パッケージ マネージャーでインストールされている、または
  • 別の Python が pyenv でインストールされている場合 、 pyenv で切り替え そのバージョンに そして pytest であることを確認してください そのために設置。次に、 pytest を実行するだけです .
    • pip以来 実行可能ファイルも切り替えられるものの 1 つです。インストールする前に、代わりの Python に切り替える必要があります。 pytest

ご覧のとおり、/usr/bin/pytest (システム パッケージ マネージャーの python-pytest に属します) パッケージ) にはシバン !#/usr/bin/python があります システム python のインストールに対応しているためです。

pyenv 、その README.md として /usr/bin/python を置き換えません - システム パッケージの破損を避けるために、実際に置き換えてはならないためです。

代わりに、そのディレクトリを PATH に追加します そこにランチャー (「シム」と呼ばれる) を挿入します。これは、「python」と入力したときに呼び出されます。 ".おそらくご想像のとおり、このハックは上記のようなシバンによって無視されます-当然のことです.

  • python -m pytest を実行しています python のいずれかになります 自身を起動するものは、そのインストールからパッケージを使用します。
  • または、pytest 他の Python バージョンでは、PATH にバージョン管理された実行可能ファイルが含まれる場合があります。 py.test-<version> という名前 (例:py.test-3 または py.test-3.6 ) インストール方法によって異なります。
    • 非標準の python 用のシステム パッケージ マネージャーのパッケージからの場合 - python36-pytest のように - これは事実上保証されています。
    • pip のバージョンをインストールするかどうかを確認しました 、バージョン管理されていない実行可能ファイルのみを作成します(ただし、バージョン管理されたものを自分で作成できます)。さらに、異なる Python バージョンの同じパッケージを同じ --prefix でインストールすると、 、既存の実行可能ファイルを上書きします!
  • pyenv の提案された方法は、すべての python をインストールすることのようです 興味のあるバージョンおよび ~/.pyenv/versions 以下のパッケージ .
    • これはシステムの Python には適用されませんが、デフォルトの /usr/local には適用されません
    • 別の Python バージョンに切り替えると、すべて のシムを作成すると主張します。 スクリプト (pip を含む) !) そのバージョンに現在インストールされているもの 、パスなしでこれらのスクリプトを呼び出すと、それらのシムが実行されます.
      • したがって、パッケージ (およびそのスクリプト) が代替バージョン用にインストールされておらず、システム バージョン用にインストールされている場合、その実行可能ファイルを実行しようとすると、/usr/local に「フォール スルー」します。 あなたが今見ている結果だけで。

Python 2.7 で「black」を実行したかっただけですが、pyenv の Python 3.7.9 にインストールしました。スクリプト /usr/local/bin/black27 で正しく動作しました :

PYENV_VERSION=3.7.9 black -t py27 "[email protected]"

動作しませんでした:

pyenv shell 3.7.9
black -t py27 "[email protected]"

pyenv shell 3.7.9
pyenv exec black -t py27 "[email protected]"

この関連する質問を見つけました。彼らにとっては、これでうまくいきました:

python -m pytest tests/my_test.py

うまくいくことを願っています


Linux
  1. 「でスクリプトを実行します。 」と「ソース」で?

  2. Suオプション–別のユーザーとしてコマンドを実行しますか?

  3. Minicondaを使用してPythonアプリケーションをDocker化する方法

  1. Linux 上の Python で export を使用する方法

  2. 古いバージョンの libstdc++ とのリンク

  3. &を使用してバックグラウンドで実行すると、Python スクリプトの Nohup が機能しない

  1. Dpkgでカーネルアップデートをブロックしますか?

  2. Linux で Python を使用してキーストロークをシミュレートする

  3. 別のディレクトリからスクリプトを実行する