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/