Sečteno a podtrženo:spustit
python -m pytest
nebopy.test-<version>
pokud váš alternativní Python apytest
se instalují pomocí správce systémových balíčků nebo- pokud byl váš alternativní Python nainstalován s
pyenv
, přepněte pomocípyenv
na tuto verzi a ujistěte se, že mátepytest
nainstalovaný pro něj. Pak stačí spustitpytest
.- od
pip
spustitelný je také mezi přepínanými, musíte před instalací přepnout na alternativní Pythonpytest
za to taky.
- od
Jak vidím, /usr/bin/pytest
(patří do python-pytest
správce balíčků systému balíček) má shebang !#/usr/bin/python
protože to odpovídá instalaci systémového pythonu.
pyenv
, jako jeho README.md
říká, nenahrazuje /usr/bin/python
- protože by se opravdu neměl nahrazovat, aby nedošlo k porušení systémových balíčků.
Místo toho přidá svůj adresář do PATH
a vloží tam spouštěč (nazývaný "shim"), což je to, co se vyvolá, když zadáte "python
". Jak jste pravděpodobně uhodli, tento hack je ignorován šebangem, jako je výše uvedený - jak by měl."
- Spuštění
python -m pytest
udělá podle toho, copython
který se sám spustí, použije balíček ze své instalace. - Případně
pytest
pro vaši další verzi Pythonu může obsahovat verzované spustitelné soubory naPATH
s názvempy.test-<version>
(např.py.test-3
nebopy.test-3.6
) v závislosti na způsobu instalace.- Pokud je z balíčku správce balíčků systému pro nestandardní python – jako
python36-pytest
- to je prakticky zaručeno. - Zkontroloval jsem, že pokud nainstalujete verzi s
pip
, vytvoří pouze spustitelný soubor bez verze (ačkoli verzi s verzí si můžete vytvořit sami). Navíc, pokud nainstalujete stejný balíček pro jinou verzi Pythonu, ale se stejným--prefix
, přepíše stávající spustitelný soubor!
- Pokud je z balíčku správce balíčků systému pro nestandardní python – jako
pyenv
Zdá se, že navrhovaný způsob je nainstalovat všechnypython
verze zájmu a balíčky pro ně pod~/.pyenv/versions
.- Toto neplatí pro systémový Python, ale výchozí
/usr/local
lze na to použít. - Jakmile přejdete na alternativní verzi Pythonu, tvrdí, že vytvoří shims pro všechny skripty (včetně
pip
!), které jsou aktuálně nainstalovány pro danou verzi , takže vyvolání těchto skriptů bez cesty by spustilo tyto shims.- Pokud tedy balíček (a tím i jeho skript) není nainstalován pro alternativní verzi, ale je nainstalován pro verzi systému, pokus o spuštění jeho spustitelného souboru by "spadl" na
/usr/local
s výsledkem, který nyní vidíte.
- Pokud tedy balíček (a tím i jeho skript) není nainstalován pro alternativní verzi, ale je nainstalován pro verzi systému, pokus o spuštění jeho spustitelného souboru by "spadl" na
- Toto neplatí pro systémový Python, ale výchozí
Jen jsem chtěl spustit "černo" pro Python 2.7, ale nainstaloval jsem ho do Pythonu 3.7.9 od pyenv. Se skriptem /usr/local/bin/black27
to fungovalo správně :
PYENV_VERSION=3.7.9 black -t py27 "[email protected]"
Nefungovalo to s:
pyenv shell 3.7.9
black -t py27 "[email protected]"
ani
pyenv shell 3.7.9
pyenv exec black -t py27 "[email protected]"
Našel jsem tento související dotaz. Pro ně to fungovalo s tímto:
python -m pytest tests/my_test.py
Doufám, že to funguje