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.