Разрешить Python.app на El Capitan (OS X)

введите описание изображения здесь

Я использую исполняемый файл python в виртуальной среде. Я пробовал делать всю вещь codesign, как описано здесь, включая создание сертификата и т.д. Команда работала, но результат остался тем же, Я думаю, что он работал над предыдущими версиями OS X, но в настоящее время я использую самую последнюю версию El Capitan (10.11.6), и она больше не работает. Любые идеи о том, как исправить это?

EDIT: я видел это решение, но поскольку мой python находится в виртуальной среде, я не уверен, что это применимо, если вы, ребята, не говорите иначе...

EDIT 2: я пробовал решение выше, не работал. Я должен упомянуть, что я координирую исполняемый файл python в virtualenv.

EDIT 3. Дело в том, что я работал над обновлением flask до текущей версии (с помощью pip install flask --upgarde) и запускаю приложение с export FLASK_APP=app.py; flask run вместо python app.py. Когда вы запускаете приложение с flask run, раздражающее диалоговое окно больше не появляется. Мне не нужно координировать себя. Надеюсь, это поможет кому-то.

Ответ 1

Почему это происходит?

Итак, исполняемые файлы python в El Capitan порождают .../Python.framework/Versions/2.7/Resources/Python.app + дополнительную магию. Проблема состоит в том, что пакет framework не имеет своей собственной подписи и использует подписи родительских двоичных приложений.

Как проверить?

Первое, что нужно проверить после установки приложений из не поддерживаемых Apple-источников, которые могут быть использованы, - это проверить, ограничено ли приложение, которое вы устанавливаете:

ls -lO /System/Library/Frameworks/Python.framework/Versions/2.7/
csrutil status

Если он ограничен, его нельзя удалить (даже с помощью root) до тех пор, пока SIP включен.

Что делать?

Итак, у вас есть несколько различных вариантов, которые вы должны попробовать:

  • Pre-Option 0 - Я думаю, что вы уже делаете это: я не уверен, как вы поддерживаете свою виртуальную среду, поэтому просто подтвердите, что вы проходите процесс, например здесь.

  • Вариант 1 - безопасен, но может не работать. Используйте brew, чтобы поддерживать исполняемые файлы и pip для поддержки ваших пакетов. Это обычно решает проблему немедленно, но я не уверен, в чем ваш случай:)

  • Вариант 2 - опасный, но будет работать: Проверить и Disable SIP. Если вы не работаете в среде, защищенной командой ИТ-ребята с многолетним опытом безопасности, я не предлагаю этого. Этот вариант разрешит проблему, но вы в основном избавляетесь от одного из уровней безопасности... GL!

ОБНОВЛЕНИЕ 1

Есть еще один вариант (не уверен, что вы его попробовали)

  • Вариант 1.5 - Я понятия не имею, будет ли он работать. Попробуйте вариант 1 (csrutil disable), перезагрузитесь, пройдете процесс codesign, перезагрузитесь и отмените вариант 1 (csrutil enable). Я никогда не пробовал, но это не значит, что вы не можете:))) Кредит идет на этот ответ SO здесь