Форум сайта python.su
Добрый день всем!
Я занимаюсь био- и хемоинофрматикой, у меня установлен PythonMoleculeViewer (PMV).
Сегодня скачал новую программку для молекулярного моделирования, PharmDock. К ней скрипт прилагается питоновский, чтобы интегрировать её в графическую оболочку.
Пытаюсь прочитать скрипт в питоне, он мне выдаёт вот такое сообщение об ошибке.
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) on win32
Type “copyright”, “credits” or “license()” for more information.
****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************
IDLE 1.2.2 ==== No Subprocess ====
>>> Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 560, in doit
execfile( filename, glob)#, localDict)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 3-9: ordinal not in range(128)
ERROR *********************************************
Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\VF.py”, line 898, in tryto
result = command( *args, **kw )
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 567, in doit
warnings.warn('the exception reported above occured while sourcing **** ‘+filename+’ ****')
File “C:\Program Files\MGLTools-1.5.6\lib\warnings.py”, line 62, in warn
globals)
File “C:\Program Files\MGLTools-1.5.6\lib\warnings.py”, line 126, in warn_explicit
showwarning(message, category, filename, lineno)
File “C:\Program Files\MGLTools-1.5.6\lib\idlelib\PyShell.py”, line 61, in idle_showwarning
file.write(warnings.formatwarning(message, category, filename, lineno))
File “C:\Program Files\MGLTools-1.5.6\lib\idlelib\PyShell.py”, line 72, in idle_formatwarning
s += “%s: %s\n>>> ” % (category.__name__, message)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 61-67: ordinal not in range(128)
Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 560, in doit
execfile( filename, glob)#, localDict)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 3-9: ordinal not in range(128)
ERROR *********************************************
Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\VF.py”, line 898, in tryto
result = command( *args, **kw )
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 567, in doit
warnings.warn('the exception reported above occured while sourcing **** ‘+filename+’ ****')
File “C:\Program Files\MGLTools-1.5.6\lib\warnings.py”, line 62, in warn
globals)
File “C:\Program Files\MGLTools-1.5.6\lib\warnings.py”, line 126, in warn_explicit
showwarning(message, category, filename, lineno)
File “C:\Program Files\MGLTools-1.5.6\lib\idlelib\PyShell.py”, line 61, in idle_showwarning
file.write(warnings.formatwarning(message, category, filename, lineno))
File “C:\Program Files\MGLTools-1.5.6\lib\idlelib\PyShell.py”, line 72, in idle_formatwarning
s += “%s: %s\n>>> ” % (category.__name__, message)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 61-67: ordinal not in range(128)
Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 560, in doit
execfile( filename, glob)#, localDict)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 3-9: ordinal not in range(128)
ERROR *********************************************
Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\VF.py”, line 898, in tryto
result = command( *args, **kw )
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 567, in doit
warnings.warn('the exception reported above occured while sourcing **** ‘+filename+’ ****')
File “C:\Program Files\MGLTools-1.5.6\lib\warnings.py”, line 62, in warn
globals)
File “C:\Program Files\MGLTools-1.5.6\lib\warnings.py”, line 126, in warn_explicit
showwarning(message, category, filename, lineno)
File “C:\Program Files\MGLTools-1.5.6\lib\idlelib\PyShell.py”, line 61, in idle_showwarning
file.write(warnings.formatwarning(message, category, filename, lineno))
File “C:\Program Files\MGLTools-1.5.6\lib\idlelib\PyShell.py”, line 72, in idle_formatwarning
s += “%s: %s\n>>> ” % (category.__name__, message)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 61-67: ordinal not in range(128)
Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 560, in doit
execfile( filename, glob)#, localDict)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 3-9: ordinal not in range(128)
Он мне такое выдаёт и при попытке записать/прочитать файлы наших, молекулярных, специфических форматов (сессия PMV, файлы структуры белка RDBQT и иже с ними). Та же самая ошибка: UnicodeEncode Error.
Пытался почитать про неё, но так и не понял, в чём дело у меня.
Кто-нибудь может подсказать, что это такое и как решить проблему?
Заранее спасибо.
P. S. Скрипт прикрепляю. Также вы можете посмотреть его здесь: Скрипт на сайте производителя
Прикреплённый файлы: PharmDock.py (73,5 KБ)
Офлайн
Vic57, пробовал в самом начале прописать кодировку UTF-8 и то, что рекомендуют в самом конце присланной Вами статьи. Скрипт сохранят в Notepad++, кодировку менял на UTF-8 перед этим. Та же ошибка, та же проблема. По-прежнему система жалуется на ошибку с ASCII. Не могу понять, почему он всё за ASCII цепляется и на UTF-8 не переключается?
Офлайн
Слепой метод не всегда помогает.
поставьте брейк на
C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 560
или пропишите в файле в этом месте обработку ошибки с записью в файл того что передается в execfile.
Сразу станет понятно в чем дело.
Похоже у вас в путях файлы с названиями на русском. но бывают и другие варианты.
Офлайн
Doza_and, а Вы не могли бы подсказать, как это делается? Что именно надо прописывать?
Просто я в программировании не понимаю ровно ничего.
Что такое брейк (насколько я знаю, break – это команда “Разорви цикл!”)? Чем он мне поможет и как его прописать?
И как прописать обработку ошибки?
И в какое место в скрипте писать эти инструкции?
Что касается путей. У меня файлы, к которым ведут пути, называются по-английски. А вот папки, в которых находятся файлы (и, соответственно, присутствующие в путях), называются по-русски. Может быть, дело в этом? Все пути должны быть целиком на латинице?
Офлайн
Переименовал папку по-английски. Ошибка кодировки пропала. Видимо, дело в этом.
Но теперь программа выводит другую ошибку.
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) on win32
Type “copyright”, “credits” or “license()” for more information.
****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************
IDLE 1.2.2 ==== No Subprocess ====
>>> Traceback (most recent call last):
File “C:\Program Files\MGLTools-1.5.6\lib\site-packages\ViewerFramework\customizationCommands.py”, line 560, in doit
execfile( filename, glob)#, localDict)
File “DPharmDock scripts/PharmDock.py”, line 15, in <module>
from pymol import cmd, stored, util
ImportError: No module named pymol
Что делать теперь?
Офлайн
установить модуль pymol или если он у вас есть… сделать чтобы питон его видел
Офлайн
Doza_and, ладно, если дойдут руки до модуля, напишу сюда ещё раз, с вопросом, как этом делается. Просто, после того как я все пути латиницей переименовал, ошибка кодировки исчезла, и ситуация с AutoDock (он тоже на базе питона) нормализовалась. Буду сейчас пытаться решить свою задачу через AutoDock.
Спасибо огромное, что навели меня на мысль! Я и не подозревал, что надо просто пути переименовать латиницей! Ларчик, как говорят, просто открывался.
Спасибо ещё раз огромное!
Офлайн