Intinya:lari
python -m pytest, ataupy.test-<version>jika Python danpytestalternatif Anda diinstal dengan pengelola paket sistem, atau- jika Python alternatif Anda telah diinstal dengan
pyenv, alihkan denganpyenvke versi itu dan pastikan Anda memilikipytestdiinstal untuk itu. Kemudian Anda bisa menjalankanpytest.- sejak
pipdapat dieksekusi juga di antara yang dialihkan, Anda perlu beralih ke Python alternatif sebelum menginstalpytestuntuk 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 pytestakan membuatpythonmana saja yang diluncurkan sendiri menggunakan paket dari instalasinya. - Atau,
pytestuntuk versi Python Anda yang lain mungkin menyertakan executable berversi padaPATHbernamapy.test-<version>(misalnyapy.test-3ataupy.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--prefixyang sama , itu akan menimpa executable yang sudah ada!
- Jika itu dari paket pengelola paket sistem untuk python tidak standar - seperti
pyenvcara yang disarankan tampaknya adalah menginstal semuapythonversi minat dan paket untuk mereka di bawah~/.pyenv/versions.- Ini tidak berlaku untuk Python sistem tetapi
/usr/localdefault 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/localhanya 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