Python: из ошибки импорта - PullRequest
3 голосов
/ 24 февраля 2011

Я использую Python 2.6.6 в Ubuntu 10.10.

Я понимаю, что мы можем импортировать модуль и связать этот модуль с другим именем, например,

import spam as eggs

,

from eggs import spam as foo

Моя проблема в том, что при запуске примеров PySide следующий код импорта не запускается:

import PySide as PyQt4
from PyQt4 import QtCore, QtGui

Генерирует ошибку импорта:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PyQt4

Очевидно, что, согласно интерпретатору Python, приведенный выше код неверен, у меня вопрос: почему он неверен или, скорее, почему он не работает?

Ответы [ 2 ]

4 голосов
/ 24 февраля 2011

import и from являются специальным синтаксисом.

Они ищут имя модуля, что означает файл в sys.path, который начинается с имени модуля.

И кажется, что у вас не установлен PyQt4, поэтому он потерпит неудачу.

Тот факт, что у вас есть переменная с именем PyQt4 в вашем пространстве имен после выполнения import PySide as PyQt4, ничего не меняет, Python все еще ищет фактический модуль с именем PyQt4, когда вы делаете from PyQt4 import QtCore, QtGui.

Попробуйте сделать

import PySide as PyQt4
QtCore = PyQt4.QtCore
QtGui = PyQt4.QtGui

или

import PySide as PyQt4
from PySide import QtCore, QtGui

Это должно быть эквивалентно.

2 голосов
/ 04 июня 2011

Я только что установил PySide и делал урок, где во всех примерах использовался PyQt4. Мне надоело менять импорт с PyQt4 на PySide, поэтому я просто сделал символическую ссылку в своих пакетах сайта, выполнив следующие шаги:

1) Конечно, есть лучший способ, но я нашел, где мои пакеты python были установлены, открыв оболочку и запустив python, затем в интерактивном интерпретаторе набрал:

>>> import sys

>>> print sys.path

2) Затем я нашел PySide в одном из каталогов и перешел на него (nb если вы используете MacSports PySide для Python 2.7 на Mac OSX Leopard 10.5.8).

3) Затем я сделал символическую ссылку с ln, в моем случае мне пришлось использовать sudo:

sudo ln -s PySide PyQt4

Вот и все, теперь я могу просто использовать:

from PyQt4 import QtGui

как обычно - счастливых дней!

Очевидно, что если вы когда-нибудь захотите установить PyQt4, вам сначала нужно использовать символическую ссылку PyQt4. Еще одно предостережение: то, что я описал выше, вполне может быть неправильным / плохим во многих отношениях - я не эксперт по установке Python, но пока это нормально для меня. YMMV так что используйте на свой страх и риск. Надеюсь, кто-то скоро прокомментирует, чтобы сказать "нет, очень плохо!" или в идеале "да не парься, мы крутые .."

...