Si configura un entorno virtual usando: "python3 -m venv my-venv", desde cualquier terminal active ese entorno virtual llamando a "source ... / my-env / bin / enable", entonces python 3.5 será el por defecto en ese terminal. Puede verificar la versión predeterminada actual llamando a "python -V".
Craig Hicks
Si bien su respuesta es útil, le pregunté por qué. no como hacerlo y ese es el gran debate. aquí. ¿Por qué debería una versión anterior por defecto, en lugar de la versión actual?
givonz
1
¡Estás exactamente en lo cierto acerca de mi "comentario"! Por eso escribí un comentario y no una respuesta.
Craig Hicks
Respuestas:
56
No sé qué "documentos" estás leyendo ni qué dicen, pero /usr/bin/pythones solo un enlace simbólico a la versión predeterminada de python, en este caso 2.7, que es el resultado de simplemente escribir pythonen el terminal. Este es el resultado de PEP 394 que define que
Por el momento, todas las distribuciones deben garantizar que se pythonrefiere al mismo objetivo quepython2 .
type pythony file /usr/bin/pythonconfirmará esto.
La razón de esta disposición, aparte de la convención, es que el paquete fuente python-defaults en Xenial es la versión 2.7.11 , por lo que el enlace simbólico de python apunta a esta versión.
Para usar Python 3, debe ser explícito y escribir python3en la línea de comando, que se recomienda en caso de que necesite una versión específica, esto también se puede hacer con Python 2, escribiendo python2. Ubuntu incluye versiones de python 2 y 3 de forma predeterminada en todas las versiones actuales.
Para obtener Python 3.5 REPL o ejecutar un script que sea compatible, escriba python3. Esto es para mantener la compatibilidad con todo el legado de python 2.x (que siempre ha estado y seguirá vinculado python).
El guión podría encontrar pythonsi configura un .desktoparchivo para él (en ~/.local/share/applications/), para abrir un terminal e iniciar REPL, por ejemplo. No hay un entorno de GUI REPL predeterminado para python, y las expectativas normales de la interfaz son que el usuario vaya al terminal.
Se habla de que Python 3.5 es el predeterminado: los mantenedores portan todos los scripts del sistema desde Python 2.x a Python 3.x, no que Python 3 reemplazaría a Python 2 en todos los casos.
Entonces, supongo que la pregunta correcta es, ¿cómo agrego python3 a mi ruta, para que se ejecute automáticamente?
givonz
quieres decir, ¿cómo consigues que los scripts de python se ejecuten como un programa compilado?
Andrew Keech
Gracias. simplemente escriba python3 en el símbolo del sistema.
givonz
2
AIUI qué hacer con / usr / bin / python a largo plazo sigue siendo una pregunta abierta. La mejor práctica para los scripts de python2 sería usar python2 explícitamente.
Peter Green
1
en lugar de usar #!/usr/bin/python3(o #!/usr/bin/python2) en scripts, mejor usar (solo para python, específicamente) #!/usr/bin/env python3si desea que sea remotamente portátil. En su mayor parte, esto es solo documentación, ya que en muchos casos se llamará usando de $ python3 your_pyprogram.pytodos modos.
michael
4
Asume que el Python predeterminado debería estar disponible como python. Esa suposición está mal.
En un sistema que viene con Python 3 "precargado" y sin Python 2, habrá solo python3y no python.
El código escrito para Python 3 siempre debe buscar un intérprete llamado python3. El código escrito para Python 2 históricamente se buscará python.
Puede llegar un momento en el tiempo, posiblemente dentro de décadas, en el que casi nadie recuerda Python 2, cuando pythonpodría comenzar a referirse python3. ¡Esto sería solo por conveniencia, y puede y no debe hacerse prematuramente, si es que lo hace! No hay prisa, por el siguiente impacto:
Los sistemas "antiguos" actuales no tendrán conocimiento python2, solo python, por lo que tiene mucho sentido mantener el código Python 2 en busca python. Esta es la razón por la cual pythondebería referirse a Python 2 para "mientras exista el código Python 2".
El nuevo código escrito para Python 2, si eso tiene sentido, puede buscar perfectamente python. También podría buscarlo python2, si está destinado a ejecutarse solo en sistemas conscientes de Python 3 y bien arreglados (que deberían ofrecer dicho enlace).
El beneficio del uso del código Python 2 python2sería que no necesita un toque adicional una vez que pythoncomienza a referirse python3, lo que podría nunca suceder, o una vez que pythondesaparezca, lo que podría o no suceder. (Eso podría hacerse realidad si el código de Python 2 se extingue después de que el hipotético Python 4 se vuelva popular con su intérprete python4. Porque dejar que apunte a uno python3o python4ambos sería confuso).
¿Cómo escribes el mismo comando y obtienes 2 resultados diferentes?
givonz
44
el resultado diferente de la segunda invocación de pythones usar <tab>para consultar el autocompletador, que luego genera las posibles permutaciones de python*y le devuelve a un nuevo indicador.
Andrew Keech
@ givonz, hmm usé la tecla TAB hermano. No es salida. Es posible un patrón binario.
rɑːdʒɑ
¿Voto negativo para qué?
rɑːdʒɑ
2
No voté en contra, pero creo que la respuesta debería explicar por qué los 2 primeros resultados son diferentes y cuál es el papel apt-cache, especialmente para los principiantes de Ubuntu.
AL
2
Python 3.x debería funcionar con 16.04 - En realidad, definitivamente FUNCIONARÁ. Tengo Ubuntu 14.04 y tengo Python 3.4.3. Todo lo que tienes que hacer para probarlo es escribir python3y debería decirte qué versión estás ejecutando.
Bueno, no llamaría usando una informática de SO. Y estrictamente hablando: Ubuntu es un sistema operativo basado en Linux y no basado en Unix.
magu_
Todavía tengo que entender la diferencia entre Linux y Unix, además de algunas instrucciones de comando y de manera diferente, pero con comandos muy redactados. aunque la interfaz gráfica de usuario es mucho más avanzada que la que veo en Solaris.
Respuestas:
No sé qué "documentos" estás leyendo ni qué dicen, pero
/usr/bin/python
es solo un enlace simbólico a la versión predeterminada de python, en este caso 2.7, que es el resultado de simplemente escribirpython
en el terminal. Este es el resultado de PEP 394 que define quetype python
yfile /usr/bin/python
confirmará esto.La razón de esta disposición, aparte de la convención, es que el paquete fuente python-defaults en Xenial es la versión 2.7.11 , por lo que el enlace simbólico de python apunta a esta versión.
Para usar Python 3, debe ser explícito y escribir
python3
en la línea de comando, que se recomienda en caso de que necesite una versión específica, esto también se puede hacer con Python 2, escribiendopython2
. Ubuntu incluye versiones de python 2 y 3 de forma predeterminada en todas las versiones actuales.Hay planes para migrar todo a Python 3 y marcarlo como predeterminado.
fuente
Para obtener Python 3.5 REPL o ejecutar un script que sea compatible, escriba
python3
. Esto es para mantener la compatibilidad con todo el legado de python 2.x (que siempre ha estado y seguirá vinculadopython
).El guión podría encontrar
python
si configura un.desktop
archivo para él (en~/.local/share/applications/
), para abrir un terminal e iniciar REPL, por ejemplo. No hay un entorno de GUI REPL predeterminado para python, y las expectativas normales de la interfaz son que el usuario vaya al terminal.Se habla de que Python 3.5 es el predeterminado: los mantenedores portan todos los scripts del sistema desde Python 2.x a Python 3.x, no que Python 3 reemplazaría a Python 2 en todos los casos.
fuente
#!/usr/bin/python3
(o#!/usr/bin/python2
) en scripts, mejor usar (solo para python, específicamente)#!/usr/bin/env python3
si desea que sea remotamente portátil. En su mayor parte, esto es solo documentación, ya que en muchos casos se llamará usando de$ python3 your_pyprogram.py
todos modos.Asume que el Python predeterminado debería estar disponible como
python
. Esa suposición está mal.En un sistema que viene con Python 3 "precargado" y sin Python 2, habrá solo
python3
y nopython
.El código escrito para Python 3 siempre debe buscar un intérprete llamado
python3
. El código escrito para Python 2 históricamente se buscarápython
.Puede llegar un momento en el tiempo, posiblemente dentro de décadas, en el que casi nadie recuerda Python 2, cuando
python
podría comenzar a referirsepython3
. ¡Esto sería solo por conveniencia, y puede y no debe hacerse prematuramente, si es que lo hace! No hay prisa, por el siguiente impacto:Los sistemas "antiguos" actuales no tendrán conocimiento
python2
, solopython
, por lo que tiene mucho sentido mantener el código Python 2 en buscapython
. Esta es la razón por la cualpython
debería referirse a Python 2 para "mientras exista el código Python 2".El nuevo código escrito para Python 2, si eso tiene sentido, puede buscar perfectamente
python
. También podría buscarlopython2
, si está destinado a ejecutarse solo en sistemas conscientes de Python 3 y bien arreglados (que deberían ofrecer dicho enlace).El beneficio del uso del código Python 2
python2
sería que no necesita un toque adicional una vez quepython
comienza a referirsepython3
, lo que podría nunca suceder, o una vez quepython
desaparezca, lo que podría o no suceder. (Eso podría hacerse realidad si el código de Python 2 se extingue después de que el hipotético Python 4 se vuelva popular con su intérpretepython4
. Porque dejar que apunte a unopython3
opython4
ambos sería confuso).fuente
Python, ambas versiones 2.x, 3.x están disponibles. si llama a python porque apunta a python 2.x, cargará python 2.x
La imagen de abajo te ayudará.
fuente
python
es usar<tab>
para consultar el autocompletador, que luego genera las posibles permutaciones depython*
y le devuelve a un nuevo indicador.apt-cache
, especialmente para los principiantes de Ubuntu.Python 3.x debería funcionar con 16.04 - En realidad, definitivamente FUNCIONARÁ. Tengo Ubuntu 14.04 y tengo Python 3.4.3. Todo lo que tienes que hacer para probarlo es escribir
python3
y debería decirte qué versión estás ejecutando.fuente