2010-08-02 20 views
41

penséAñadir al pitón ruta de Mac OS X

import sys 
sys.path.append("/home/me/mydir") 

está añadiendo un dir a mi PYTHONPATH

si imprimo sys.path mi dir es de allí.

Luego abro un nuevo comando y ya no está allí.

Pero de alguna manera, Python no puede importar los módulos que guardé en ese directorio.

¿Qué estoy haciendo mal?

He leído .profile o .bash_profile hará el truco.

¿Tengo que añadir:

PATH="/Me//Documents/mydir:$PYTHONPATH" 
export PATH 

para hacer que funcione?

Respuesta

56

Las modificaciones de sys.path solo se aplican durante la vida de ese intérprete de Python. Si desea hacerlo de forma permanente tiene que modificar la variable de entorno PYTHONPATH:

PYTHONPATH="/Me/Documents/mydir:$PYTHONPATH" 
export PYTHONPATH 

Tenga en cuenta que PATH es la ruta del sistema de archivos ejecutables, que es totalmente independiente.

** Se puede escribir lo anterior en ~/.bash_profile y la fuente usando source ~/.bash_profile

+3

Muchas gracias (se olvidó de eso). ¿DÓNDE pongo eso? en .profile en .bash_profile? Antes MacPython ?: # configuración de la ruta de MacPython 2.6 # La versión original se guarda en .bash_profile.pysave PATH = "/ Library/Frameworks/Python.framework/Versiones/2.6/bin: $ {PATH}" exportación RUTA ¿O después de eso? ¿Importa el orden? – MacPython

+1

'.bash_profile'. Si ya tiene un '.bash_profile', creo que bash ignora' .profile'. El orden no importa aquí, porque son dos variables de entorno diferentes. –

+0

@Felix, tenga en cuenta que el código de MacPython que tiene se ocupa de 'PATH' (ruta del sistema), una variable separada. –

6
No

seguro de por qué la solución de Mateo no funcionaba para mí (podría ser que estoy usando OSX10.8 o tal vez algo que ver con macports). Pero he añadido lo siguiente al final del archivo en ~/.profile

export PYTHONPATH=/path/to/dir:$PYTHONPATH 

mi directorio está ahora en el PYTHONPATH -

my-macbook:~ aidan$ python 
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> sys.path 
['', '/path/to/dir', ... 

y me puede importar módulos desde ese directorio.

+0

En el terminal Mac Osx, si simplemente escribo python, entonces iré a python 2.7 y si escribo python3.6, entonces abriré la versión 3.6. ¿Hay algo que pueda hacer para apuntar python a python3.6 –

1

La respuesta de Mathew funciona para el terminal shell de python, pero no funcionó para IDLE shell en mi caso porque existían muchas versiones de python antes de reemplazarlas todas con Python2.7.7. Cómo resolví el problema con IDLE.

  1. En la terminal, cd /Applications/Python\ 2.7/IDLE.app/Contents/Resources/
  2. continuación sudo nano idlemain.py, introduzca la contraseña si es necesario.
  3. después os.chdir(os.path.expanduser('~/Documents')) esta línea, he añadido sys.path.append("/Users/admin/Downloads....")NOTA: reemplazar el contenido de las cotizaciones con el directorio en el módulo de Python que se añade
  4. para guardar el cambio, Ctrl + X e introduzca inactivo Ahora abierta y tratar de importación el módulo de python, ¡no hay error para mí!
2

Establecer la variable de entorno $ PYTHONPATH no parece afectar los terminales iPython del IDE de Spyder en una Mac. Sin embargo, el menú de la aplicación de Spyder contiene un "administrador PYTHONPATH". Agregar mi camino aquí resolvió mi problema.El "administrador PYTHONPATH" también es persistente en todos los reinicios de la aplicación.

Esto es específico de una Mac, porque al establecer la variable de entorno PYTHONPATH en mi PC con Windows se obtiene el comportamiento esperado (se encuentran los módulos) sin utilizar el administrador PYTHONPATH en Spyder.