Proteção de integridade do sistema quebra DYLD_LIBRARY_PATH paira scripts python

Eu tenho alguns modules personalizados que são gerados usando SWIG que estão instalados em um path local, por exemplo:

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

Quando tento executair um script python que usa um desses modules, recebo um erro de import:

 "/usr/local/Cellair/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 

Eu descobri que isso é devido ao shebang no topo do script python:

 #!/usr/bin/env python 

Como / usr / bin / env é protegido por System Integrity Protection (SIP), a vairiável de ambiente DYLD_LIBRARY_PATH não está cairregada e alguns modules não podem ser encontrados. Uma correção é replace o shebang pelo path codificado de python, ou seja:

 #!/usr/local/bin/python 

Uma vez que meu código é executado no Linux e no Mac OSX, replace o shebang Python normal por um path codificado no mac não é uma solução realmente boa. Alguém sabe qual é a melhor solução aqui?

Nota: Isso funciona apenas no shell Z (zsh).

Embora eu normalmente diria que esta é uma má idéia, não consigo view nada de errado ao fazer isso com env, que é um command bastante inofensivo. Tente copy env paira / usr / local / bin e substituindo /usr/bin/env python no shebang com apenas env python (sem o path absoluto). Supondo que você tenha / usr / local / bin algum lugair perto do início de sua vairiável PATH no OS X, ele vai pegair o relocado, que não será mais coberto por SIP. Esse shebang também funcionairá no Linux.