2016-12-05 47 views
-1

我只是尝试了Maya 2017,看到他们已经去了PySide2,这很棒,但是我所有的工具都有import PySidefrom PySide import ...用Python导入条件模块

显而易见的解决方案是找到/替换import PySideimport PySide2并希望一切仍然有效,但我仍然希望能够支持旧版本的Maya。

我的想法是有一个单一的在线解决方案,以查找/替换,如:

import (PySide2 if "PySide2" in sys.modules else PySide) 

但这返回:Error: invalid syntax

没有人有这个的替代任何想法?我想尽量保持在一行所以它是一个简单的替代品,当我有类似情况:

from PySide import QtCore, QtGui 

谢谢!

回答

6

你可以除ImportError例外:

try: 
    from Pyside2 import QtCore, QtGui 

except ImportError: 
    from PySide import QtCore, QtGui 

或者,你可以使用importlib模块:

import importlib 
import sys 

PySide = importlib.import_module('Pyside2' if 'Pyside2' in sys.modules else 'PySide') 
+0

谢谢!这很好,如果我把它放在我的所有脚本的顶部,它应该很好地工作:) – Nodgers

+0

@Nodgers不客气 – user312016

-1

@ user312016的回答很好地工作了 “进口” 的情况,但不那么为“从PySide import ...“条件。我最终将以下内容添加到了我的启动脚本中,该脚本将所有内容重新打散。

import sys 
sys.modules['PySide'] = sys.modules['PySide2'] if 'PySide2' in sys.modules else sys.modules['PySide'] 
sys.modules['shiboken'] = sys.modules['shiboken2'] if 'shiboken2' in sys.modules else sys.modules['shiboken'] 
+0

哦,现在我已经意识到,即使这不是完美的,因为图书馆已经移动了东西在PySide2中:D – Nodgers