После тщательного изучения я обнаружил, что такая задержка открытия системного каталога с помощью команды, отправленной из редактора сценариев NUKE 11.3v4 в macOS Mojave 10.14.5 с использованием класса subprocess.Popen()
, не является ни проблемой macOS, ниСам вопрос Python.Я пытался вызвать не только класс subprocess.Popen()
с включенной защитой целостности системы в Mojave или когда SIP был отключен (см. здесь , как включить и отключить SIP), но также пробовал использовать такие устаревшие методы, какos.popen()
и commands.getoutput()
.
Для этого теста я использовал следующий код:
import nuke
from os import name, popen
from sys import platform
from subprocess import Popen
from os.path import abspath, join, dirname
from commands import getoutput
n = nuke.toNode('Read1')['file'].value()
if name == 'posix' and platform == 'darwin':
path = abspath(join(dirname(n)))
command = "open %s" % path
if path is not ".":
# commands.getoutput() method is deprecated since Python 2.6
# But it's still working in Python 2.7...
''' It takes 21 second to open a directory using getoutput() '''
getoutput(command)
# os.popen() method is deprecated since Python 2.6
# But it's still working in Python 2.7...
''' It takes 21 second to open a directory using popen() '''
popen(command)
# subprocess.Popen() class is a working horse now...
''' It takes 21 second to open a directory using Popen() '''
Popen(command, shell=True)
Независимо от того, какой системный метод или класс я использовал в Мохаве, это заняло 21 секунду (я работаю на MBP 15 ”2017), чтобы открыть нужную папку с помощью команды open
.
Итак, я могу заключить, что этот недостаток произошел от разработчиков The Foundry.Я полагаю, что в будущем выпуске NUKE 12 для macOS 10.15 Catalina эти методы будут намного лучше адаптированы.
Кроме того, вы можете найти все методы и классы Python, которые вы можете использовать из NUKE, в /Applications/Nuke11.3v4/Nuke11.3v4.app/Contents/Frameworks/Python.framework/Versions/2.7/lib/python2.7/