it-swarm-es.com

¿"Python3" y "python" usan diferentes variables de ruta?

El comando python abre un entorno Python 2.7.6. Si quiero interpretar un script Python 3, necesito reescribir el comando a python3.

Acabo de instalar el paquete numpy. Para probar la instalación exitosa, ejecuto el comando import numpy. Funciona bien cuando se usa el comando python. Sin embargo, python3 no encuentra el paquete.

¿Cómo es esto posible? ¿Estos dos comandos usan variables ruta diferentes? ¿Cómo puedo cambiar el comportamiento?

8
null

Tienes toda la razón, usan diferentes PYTHONPATHNAME _ s.

Puede pensar en Python 2.xy Python 3.x como entornos de programación completamente diferentes. Y sí, almacenan sus paquetes en diferentes lugares.

Para comenzar a trabajar, puede escribir:

Sudo apt-get install python3-numpy

Si desea averiguar dónde se guarda exactamente un paquete, puede ver los atributos del módulo __path__:

>>> import numpy
>>> numpy.__path__
['/usr/local/lib/python3.5/site-packages/numpy']

También puede instalar python3-pip y luego ejecutar pip3 install whatever para instalar paquetes para Python 3 con Pip , para paquetes que no están disponibles en Ubuntu como python3-whatever.

En caso de que esté confundido acerca de la diferencia entre distutils, setuptools, easy_install, pip y el resto, use pip. Ese es el genial. :)

8
Stefano Palazzo

No, usan el mismo PATH. Sin embargo, este problema no es con el PATH.

Python 2 y Python 3 son lo suficientemente diferentes como para que los paquetes tengan que escribirse por separado para ambos. No puede usar un paquete escrito para uno con el otro.

En Ubuntu, estos módulos se almacenan en diferentes ubicaciones y se empaquetan por separado - python-numpy para Python 2, python3-numpy para Python 3. Si desea numpy con Python 3, instale _python3-numpy_.

_$ python3 -c 'import sys; print (sys.path)'
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/home/muru/.local/lib/python3.4/site-packages', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
$ python2 -c 'import sys; print (sys.path)'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
_
4
muru

De hecho, ambos están importando módulos desde diferentes ubicaciones:

  • Python2.7: /usr/lib/python2.7/dist-packages/numpy/
  • Python3.x: /usr/lib/python3/dist-packages/numpy/

Para poder importar numpy con ambos intérpretes, asegúrese de instalar sus paquetes correspondientes:

  • Python2.7: Sudo apt-get install python-numpy
  • Python3.x: Sudo apt-get install python3-numpy
3
Sylvain Pineau