#python #pyqt #spyder
#python #pyqt #spyder
Вопрос:
Я установил последнюю версию anaconda (1.9.7), которая включает python 3.7.3, spyder 3.3.3, ipython 7.4.0, pyqt 5.9.2, и теперь у меня возникли проблемы с запуском кода, который отлично работал с предыдущей установкой anaconda (anaconda 1.7.0, python : 3.6.4, Ipython: 6.2.1 и spyder: 3.2.6). Я проверил, что spyder -> Tool-> preference -> Консоль Ipython одинакова при обеих установках.
Здесь код :
import sys
from PyQt5 import QtWidgets
if __name__ == '__main__':
if not QtWidgets.QApplication.instance():
app = QtWidgets.QApplication(sys.argv)
else:
app = QtWidgets.QApplication.instance()
T = QtWidgets.QErrorMessage()
T.setWindowTitle('Error!')
T.showMessage('some message')
T.show()
app.exec()
Итак, в основном, когда я запускаю код (выше) Я вижу, что открывается мой графический интерфейс. Однако, когда я закрываю графический интерфейс (используя X в правой части графического интерфейса), консоль IPython зависает, и у меня нет выбора перезапустить spyder (ctr C в этом случае ничего не делает). Я обнаружил, что могу устранить проблему, удалив строку: ‘app.exec ()’. Однако большую часть времени я запускаю свой код из приглашения anaconda, поэтому я не хочу удалять ‘app.exec ()’ из своего кода. Этот код отлично работал при предыдущей установке как с anaconda prompt, так и с spyder (так что в основном с использованием ipython и без него).
Я пробовал Инструменты -> Консоль Ipython -> Графика -> Серверная часть -> Автоматически, и это ничего не меняет. Если я сниму флажок «Активировать поддержку» (Tools -> Ipython console -> Graphics), это решит проблему, но я не хочу идти в этом направлении, потому что я обнаружил, что не смогу правильно использовать matplotlib (графики не будут отображаться без plt.show(), и это приведет кблокирует ipython) (при предыдущей установке был установлен флажок «Активировать поддержку»). Я, конечно, могу вернуться к предыдущей установке, но я хочу избежать этого, поскольку у меня есть другие проблемы со старой установкой (и я считаю, что последняя версия должна работать нормально). Я знаю, что могу временно устранить эту проблему (удалив app.exec() при использовании spyder или снимите флажок «Активировать поддержку»), но мне было интересно, не упускаю ли я чего-то, или это проблема, связанная с новым ipython. Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения.
Комментарии:
1. Что произойдет, если вы удалите эту строку?
Ответ №1:
(Сопровождающий Spyder здесь) Вы сказали
Я обнаружил, что могу устранить проблему, удалив строку: ‘app.exec ()’.
Итак, если вы хотите запускать свой код в Spyder и из него, вы можете заключить эту строку в следующий if
блок:
import os
if not os.environ.get('SPY_UMR_ENABLED'):
app.exec()
Это позволило бы избежать его запуска в Spyder, потому SPY_UMR_ENABLED
что переменная среды присутствует в наших консолях, но ее нет в приглашении Anaconda или в записной книжке Jupyter.
Комментарии:
1. Приятно знать! Тогда, пожалуйста, отметьте мой ответ как правильный, установив зеленую галочку слева.