Здравствуйте, Alexey931, Вы писали:
A>Что собой представляет PYTHONPATH — как бы это сказать, — "физически"? Среди переменных окружения (Linux) такой нет. sys.path, натурально, чего-то показывает:
A>У меня, однако, питонов два: 2.7 и 3.2, живут мирно, не конфликтуют. Натурально, PYTHONPATH у каждого своя, и понятно, почему я ее не вижу среди системных переменных окружения.
PYTHONPATH ищется среди переменных окружения на старте, и, если переменная объявлена, то содержимое добавляется к sys.path
вызови следующую команду в шелле и проанализируй после этого sys.path
PYTHONPATH='rsdn.dynamics' python
Здравствуйте, neFormal, Вы писали:
F>F>PYTHONPATH='rsdn.dynamics' python
F>
$ PYTHONPATH='rdsn.dynamics' python
Python 3.2.2 (default, Nov 21 2011, 16:51:01)
[GCC 4.6.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/alexey/rdsn.dynamics', '/usr/lib/python32.zip', '/usr/lib/python3.2', '/usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload', '/usr/lib/python3.2/site-packages', '/usr/lib/python3.2/site-packages/setuptools-0.6c11.egg-info']
>>>
Ну да, смотрится красиво. Но что произошло под капотом? Об этом-то вся тема... Дефицит понимания приводит, например, к следующему:
(1) Хочу воспользоваться PyQt, не выходит. Ладно, смотрю где оно:
$ ls /usr/lib/python3.2/site-packages/PyQt4
__init__.py QtDBus.so QtMultimedia.so Qt.so QtXmlPatterns.so
phonon.so QtDeclarative.so QtNetwork.so QtSql.so QtXml.so
pyqtconfig.py QtDesigner.so QtOpenGL.so QtSvg.so uic
Qsci.so QtGui.so QtScript.so QtTest.so
QtCore.so QtHelp.so QtScriptTools.so QtWebKit.so
[alexey@stovepipebox ~]$
Что получается в IDLE:
Python 3.2.2 (default, Nov 21 2011, 16:51:01)
[GCC 4.6.2] on linux2
Type "copyright", "credits" or "license()" for more information.
>>> import sys
>>> sys.path
['/home/alexey', '/usr/bin', '/usr/lib/python32.zip', '/usr/lib/python3.2', '/usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload', '/usr/lib/python3.2/site-packages', '/usr/lib/python3.2/site-packages/setuptools-0.6c11.egg-info']
>>> from PyQt4.QtCore import *
>>> a = QString("an")
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
a = QString("an")
NameError: name 'QString' is not defined
>>> sys.path.append('/usr/lib/python3.2/site-packages/PyQt4')
>>> sys.path
['/home/alexey', '/usr/bin', '/usr/lib/python32.zip', '/usr/lib/python3.2', '/usr/lib/python3.2/plat-linux2', '/usr/lib/python3.2/lib-dynload', '/usr/lib/python3.2/site-packages', '/usr/lib/python3.2/site-packages/setuptools-0.6c11.egg-info', '/usr/lib/python3.2/site-packages/PyQt4']
>>> from PyQt4.QtCore import *
>>> a = QString("an")
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a = QString("an")
NameError: name 'QString' is not defined
>>> from QtCore import *
>>> a = QString("an")
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
a = QString("an")
NameError: name 'QString' is not defined
>>> dir(PyQt4)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
dir(PyQt4)
NameError: name 'PyQt4' is not defined
>>> dir(QtCore)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
dir(QtCore)
NameError: name 'QtCore' is not defined
>>>
Иными словами, окружение я так и не настроил. О чем, собственно, и беспокоюсь.
Здравствуйте, Alexey931, Вы писали:
A>Но что произошло под капотом?
я ж объяснил..
A>(1) Хочу воспользоваться PyQt, не выходит. Ладно, смотрю где оно:
>>>> from PyQt4.QtCore import *
>>>> a = QString("an")
A>Traceback (most recent call last):
A> File "<pyshell#3>", line 1, in <module>
A> a = QString("an")
A>NameError: name 'QString' is not defined
вот здесь ^ у тебя должно было появиться предчувствие, что QString-а там нет.. и PYTHONPATH тут ни при чём..
>>>> from PyQt4.QtCore import *
>>>> a = QString("an")
A>Traceback (most recent call last):
A> File "<pyshell#6>", line 1, in <module>
A> a = QString("an")
A>NameError: name 'QString' is not defined
а что, если джважды написать одно и то же, то что-то изменится?. у тебя ж PyQt4 доступен, значит с путями всё нормально..
>>>> dir(PyQt4)
A>Traceback (most recent call last):
A> File "<pyshell#9>", line 1, in <module>
A> dir(PyQt4)
A>NameError: name 'PyQt4' is not defined
ищобы.. где ты делал 'import PyQt4' ? нигде, потому и not defined.. аналогично с QtCore..
сделай 'import PyQt4' и смотри потом dir(PyQt4)..
A>Иными словами, окружение я так и не настроил. О чем, собственно, и беспокоюсь.
дело не в окружении, а в версии питона и апишке PyQt4.. цитата:
PyQt provides two different APIs [riverbankcomputing.co.uk], the first of which provides QStrings, QVariants, etc as is in Python. The new API 2 provides automatic conversion between the Qt classes and respective native Python datatypes and is much more Pythonic in nature. PyQt on Python 2.x defaults to API 1, while PyQt on Python 3 defaults to API 2.
http://developer.qt.nokia.com/wiki/Differences_Between_PySide_and_PyQt
т.е. в PyQt4 API2, которая используется для 3го питона, нет больше QString-а и других базовых типов.. там производится конвертация из типов питона в типы Qt..
да, и когда допишут поддержку py3k для PySide, переходи на них, они лудтше