En resumen:corre
- python -m pytest, o
- py.test-<version>si su Python alternativo y- pytestse instalan con el administrador de paquetes del sistema, o
- si su Python alternativo se ha instalado con pyenv, cambia conpyenva esa versión y asegúrate de tenerpytestinstalado para ello. Entonces puedes simplemente ejecutarpytest.- desde el pipEl ejecutable también se encuentra entre los que se están cambiando, debe cambiar al Python alternativo antes de instalarpytestpara eso también.
 
- desde el 
 Como puedo ver, /usr/bin/pytest (que pertenece al administrador de paquetes del sistema python-pytest paquete) tiene un shebang !#/usr/bin/python ya que corresponde a la instalación del sistema python.
 pyenv , como su README.md dice, no reemplaza /usr/bin/python - porque, de hecho, no debe reemplazarse para evitar romper los paquetes del sistema.
 En su lugar, agrega su directorio a PATH e inserta un lanzador allí (llamado "shim") que es lo que se invoca cuando escribe "python ". Como probablemente hayas adivinado, este truco es ignorado por un shebang como el anterior, como debería ser.
- Ejecutando python -m pytesthará lo que seapythonque se lanza solo usa el paquete de su instalación.
- Alternativamente, pytestpara su otra versión de Python puede incluir ejecutables versionados en elPATHllamadopy.test-<version>(por ejemplo,py.test-3opy.test-3.6) dependiendo de la forma en que lo instaló.- Si es del paquete de un administrador de paquetes del sistema para python no estándar, como python36-pytest- esto está prácticamente garantizado.
- Comprobé que si instala una versión con pip, solo crea un ejecutable no versionado (aunque usted mismo puede crear uno versionado). Además, si instala el mismo paquete para una versión diferente de Python pero con el mismo--prefix, ¡sobrescribirá el ejecutable existente!
 
- Si es del paquete de un administrador de paquetes del sistema para python no estándar, como 
- pyenvLa forma sugerida parece ser instalar todos los- pythonversiones de interés y paquetes para ellos bajo- ~/.pyenv/versions.- Esto no es aplicable para Python del sistema, pero el predeterminado /usr/localse puede utilizar para ello.
- Una vez que cambia a una versión alternativa de Python, pretende crear correcciones de compatibilidad para todos guiones (incluyendo pip!) que están instalados actualmente para esa versión , por lo que invocar esos scripts sin una ruta ejecutaría esos shims.- Entonces, si un paquete (y por lo tanto su secuencia de comandos) no está instalado para la versión alternativa pero está instalado para la versión del sistema, intentar ejecutar su ejecutable "fallaría" en /usr/localsolo con el resultado que estás viendo ahora.
 
- Entonces, si un paquete (y por lo tanto su secuencia de comandos) no está instalado para la versión alternativa pero está instalado para la versión del sistema, intentar ejecutar su ejecutable "fallaría" en 
 
- Esto no es aplicable para Python del sistema, pero el predeterminado 
 Solo quería ejecutar "negro" para Python 2.7, pero lo instalé en Python 3.7.9 de pyenv. Funcionó correctamente con el script /usr/local/bin/black27 :
PYENV_VERSION=3.7.9 black -t py27 "[email protected]"
No funcionó con:
pyenv shell 3.7.9
black -t py27 "[email protected]"
ni
pyenv shell 3.7.9
pyenv exec black -t py27 "[email protected]"
Encontré esta pregunta relacionada. Para ellos funcionó con esto:
python -m pytest tests/my_test.py
Espero que funcione