Intinya:lari
python -m pytest
, ataupy.test-<version>
jika Python danpytest
alternatif Anda diinstal dengan pengelola paket sistem, atau- jika Python alternatif Anda telah diinstal dengan
pyenv
, alihkan denganpyenv
ke versi itu dan pastikan Anda memilikipytest
diinstal untuk itu. Kemudian Anda bisa menjalankanpytest
.- sejak
pip
dapat dieksekusi juga di antara yang dialihkan, Anda perlu beralih ke Python alternatif sebelum menginstalpytest
untuk itu juga.
- sejak
Seperti yang saya lihat, /usr/bin/pytest
(milik python-pytest
pengelola paket sistem paket) memiliki shebang !#/usr/bin/python
karena ini sesuai dengan instalasi sistem python.
pyenv
, sebagai README.md
mengatakan, tidak menggantikan /usr/bin/python
- karena memang tidak boleh diganti untuk menghindari kerusakan paket sistem.
Sebagai gantinya, ia menambahkan direktorinya ke PATH
dan menyisipkan peluncur di sana (disebut "shim") yang dipanggil saat Anda mengetik "python
". Seperti yang mungkin Anda duga, peretasan ini diabaikan oleh shebang seperti di atas - sebagaimana mestinya.
- Menjalankan
python -m pytest
akan membuatpython
mana saja yang diluncurkan sendiri menggunakan paket dari instalasinya. - Atau,
pytest
untuk versi Python Anda yang lain mungkin menyertakan executable berversi padaPATH
bernamapy.test-<version>
(misalnyapy.test-3
ataupy.test-3.6
) tergantung pada cara Anda menginstalnya.- Jika itu dari paket pengelola paket sistem untuk python tidak standar - seperti
python36-pytest
- ini hampir dijamin. - Saya memeriksa apakah Anda memasang versi dengan
pip
, itu hanya membuat executable tidak berversi (meskipun Anda dapat membuat versi sendiri). Selain itu, jika Anda menginstal paket yang sama untuk versi Python yang berbeda tetapi dengan--prefix
yang sama , itu akan menimpa executable yang sudah ada!
- Jika itu dari paket pengelola paket sistem untuk python tidak standar - seperti
pyenv
cara yang disarankan tampaknya adalah menginstal semuapython
versi minat dan paket untuk mereka di bawah~/.pyenv/versions
.- Ini tidak berlaku untuk Python sistem tetapi
/usr/local
default dapat digunakan untuk itu. - Setelah Anda beralih ke versi Python alternatif, ia mengklaim membuat shim untuk semua skrip (termasuk
pip
!) yang saat ini diinstal untuk versi tersebut , jadi menjalankan skrip tersebut tanpa jalur akan menjalankan shims tersebut.- Jadi, jika sebuah paket (dan skripnya) tidak diinstal untuk versi alternatif tetapi diinstal untuk versi sistem, mencoba menjalankan executable-nya akan "gagal" ke
/usr/local
hanya dengan hasil yang Anda lihat sekarang.
- Jadi, jika sebuah paket (dan skripnya) tidak diinstal untuk versi alternatif tetapi diinstal untuk versi sistem, mencoba menjalankan executable-nya akan "gagal" ke
- Ini tidak berlaku untuk Python sistem tetapi
Saya hanya ingin menjalankan "hitam" untuk Python 2.7, tetapi saya telah menginstalnya di Python 3.7.9 pyenv. Itu bekerja dengan benar dengan skrip /usr/local/bin/black27
:
PYENV_VERSION=3.7.9 black -t py27 "[email protected]"
Itu tidak bekerja dengan:
pyenv shell 3.7.9
black -t py27 "[email protected]"
maupun
pyenv shell 3.7.9
pyenv exec black -t py27 "[email protected]"
Saya menemukan pertanyaan terkait ini. Bagi mereka itu berhasil dengan ini:
python -m pytest tests/my_test.py
Saya harap ini berhasil