Cómo configuro USER_SITE de Python; ¿realmente necesito?

Tengo una instalación de Python en OS X (10.10; mantenida simplemente con pip) con los paquetes de mi sitio en

/Library/Python/2.7/site-packages 

Paquetes de Apple en

 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python 

y la instalación estándar de Apple Python en

 /System/Library/Frameworks/Python.framework/Versions/2.7 

No hice nada especial para configurar esto, así que asumo que es bastante estándar. Instalo mis paquetes en el directorio de paquetes del sitio, y lo único que he hecho para “personalizar” es eliminar los paquetes de Apple que no necesito o los duplicados que mantengo en el directorio de paquetes de mi sitio.

Todo funciona bien, y todos mis caminos parecen ser justo lo que esperaría; sin embargo me sale un resultado confuso cuando

 python -m site 

Si bien esto muestra un sys.path que tiene sentido para mí

 sys.path = [ '/Users/Rax', '/Users/Rax/Documents/Projects/Coding/Python', # From PYTHONPATH '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/Library/Python/2.7/site-packages', ] 

Yo tambien tengo

 USER_BASE: '/Users/Rax/Library/Python/2.7' (doesn't exist) USER_SITE: '/Users/Rax/Library/Python/2.7/lib/python/site-packages' (doesn't exist) ENABLE_USER_SITE: True 

Lo que no tiene sentido para mí.

¿No debería USER_SITE ser /Library/Python/2.7/site-packages ? Si es así, ¿cómo lo configuro (no puedo configurando USER_SITE en /Library/Python/2.7/ porque lib/python/ se agrega a la ruta)?


Esto me resulta doblemente confuso porque /Library/Python/2.7/site-packages se ha agregado correctamente a mi sys.path (de donde no lo sé) y porque

 import pkg_resources pkg_resources.__file__ 

cede /Library/Python/2.7/site-packages/pkg_resources.pyc .

El sitio de usuario es una maquinaria destinada a “permitir a los usuarios la instalación local de paquetes de Python en su directorio de inicio”. (ver aquí ). es decir, está pensado para paquetes de usuarios locales, en lugar de para la instalación en todo el sitio. Si tiene varios usuarios en su sistema, sus paquetes de sitio de usuario serían separados.

De la documentación , podemos ver que USER_SITE es:

Ruta a los paquetes de sitio de usuario para Python en ejecución. Puede ser Ninguno si getusersitepackages () aún no se ha llamado. El valor predeterminado es ~ / .local / lib / pythonX.Y / site-packages para las comstackciones de Mac OS X UNIX y no-framework, ~ / Library / Python / XY / lib / python / site-packages para las comstackciones de framework Mac, y% APPDATA% \ Python \ PythonXY \ site-packages en Windows. Este directorio es un directorio de sitio, lo que significa que se procesarán los archivos .pth.

(El de la base de usuarios está en la misma ubicación)

Entonces, para responder a tu pregunta, creo que están configurados correctamente. Es una ubicación de paquetes de sitio diferente a la normal.

También puedes ver en el módulo general la documentación que dice:

Este archivo está destinado a crearse en el directorio de paquetes de sitios del usuario (ver más abajo), que forma parte de sys.path a menos que esté deshabilitado por -s. Un ImportError será ignorado silenciosamente.

Entonces, el hecho de que estos caminos no existan no importa.

Además, con respecto a su pregunta:

¿No debería USER_SITE ser /Library/Python/2.7/site-packages?

Tenga en cuenta que en los documentos dice ~ / Library / … – que ~ se reemplaza por /Users/Rax/

No debe preocuparse por la configuración de USER_SITE en absoluto. Si el directorio no existe, no se agrega a la ruta de todos modos.