Python Slow с macOS Мохаве 10.14

Я использую Python 2.7.3 на недавно установленной MacOS 10.14 (Mojave). Код работает в Nuke от Foundry.

a=nuke.selectedNode()
b=a['file'].value()
#b now has path to some file
u=os.path.split(b) [0]
u = os.path.normpath (u)
if u != ".":
    subprocess.Popen(['open', '-R', '%s' % (u)])

Я пытаюсь открыть окно Finder, где находится файл. В предыдущей версии macOS он мгновенно открывал бы Finder. С последним обновлением требуется 30-60 секунд, чтобы открыть (иногда это даже не работает).

Любая помощь, пожалуйста. Спасибо.

0 ответов

После тщательного расследования я обнаружил, что такая задержка открытия системного каталога с помощью команды, отправленной из редактора сценариев NUKE 11.3v4 в macOS Mojave 10.14.5 с использованием subprocess.Popen()class, не является проблемой ни 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/

Другие вопросы по тегам