2 votos

La protección de integridad del sistema rompe DYLD_LIBRARY_PATH para los scripts de python

Tengo algunos módulos personalizados que se generan usando TRAGO que se instalan en una ruta de acceso local, por ejemplo:

catkin_ws/devel/lib/python2.7/site-packages

Cuando intento ejecutar una secuencia de comandos de python que utiliza uno de estos módulos, me sale un error de importación:

"/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named _mag_manip

He descubierto que esto es debido a que el proceso en la parte superior de la secuencia de comandos de python:

#!/usr/bin/env python

Debido a que /usr/bin/env está protegido por la Integridad del Sistema de Protección (SIP), el DYLD_LIBRARY_PATH variable de entorno no está cargado y algunos módulos no se encuentra. Una solución es reemplazar el shebang con el codificado path de python es decir:

#!/usr/local/bin/python

Desde mi código se ejecuta en Linux y Mac OSX, en sustitución de la normal de python shebang con un duro camino en mac no es realmente una buena solución. ¿Alguien sabe cuál es la mejor solución es aquí?

1voto

William T Froggard Puntos 2862

Nota: Esto sólo funciona en la Z shell (zsh).

Aunque yo suelo decir que es una mala idea, no veo nada malo en hacer esto con env, que es bastante inofensiva comando. Intente copiar env en /usr/local/bin y sustitución de /usr/bin/env python en el shebang con sólo env python (sin la ruta de acceso absoluta). Suponiendo que usted ha /usr/local/bin en algún lugar cerca del comienzo de su variable de entorno PATH en OS X, que va a recoger los reubicados, que dejará de estar cubierto bajo la SIP. Que el proceso también funciona en Linux.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X