Целевая ОС: WinXP/7 ; Python 2.7.1 ; PyQt-Py2.7-x86-gpl-4.8.3-1 ; wxPython2.9-win32-2.9.1.1-py27 ; Spider IDE (2.0.10_py27) ; winpdb-1.4.8
Особенно хотелось бы прочитать советы людей которые собственно используют Spider IDE как среду разработки… Хотя судя по всему она особой популярностью не пользуется :)
Хотя на вопросы котрые я задам далее смогут верояно дать ответы все опытные Python-программисты.
Инетерес можно так сказать “спортивный”. Python изучаю недавно, за плечами C++, Java(посредственно), С#, VB.NET, Ruby (так-же как и Python - недавно)
Лично мне из всех IDE которые успел попробовать, а я “прошелся чесом” по первой части списка… и даже столь любимый мной по Ruby и Java - NetBeans оказался жутким “УГ” относительно Python, в плане автокомплита у большей части из них не хватало силенок даже для os.getcwd ^_^ я уж и не говорю про какую-то реакцию на import, Рефакторинг - плох у всех… и т.д.
(PS: Из всех самое удобное - PyScripter, но он не удовлетворял потребностей кросплатформенности, Ninja-IDE - неплохо , но автокомлит и “utf-8” подкачали)
Милее всех оказался Spider IDE - очень неплохо… ; Всё остальное “жесть” (KOMODO даже пробовать не стал в силу “платности” сего)
Так вот…
“Ларчик-то просто открывался” это не про Spider IDE, изначально он вообще не везде хотел работать и пришлось дебажить его чтобы выявить его интересную особенность создавать свою рабочую директорию в …Documents and Settings\%USER%\.spyder2\ отсюда в силу плохих отношений Python с кирилицей - работать из-под русскоязычных юзеров, отказывался…
пришлось поравить ему “мозги” и перенести директорию поближе к питону, напрямую указав пути…
Пробема #2
Несмотря на мануал самого Spider - , тем более что среди настроек (\.spyder2\.spyder.ini) присутствует “editor/debug with winpdb = ‘F7’”
winpdb установлен в соответсвии с мануалом:ъ
…Enter the new folder from a CMD terminal window and type: python.exe setup.py installИ все равно, как ни крути находясь в IDE Spyder в ответ на F7 нас ожидает “тишина и спокойтвие”
Ну что-ж… снова лезем в “потроха” и пытаемся разобраться как обрабатывается F7, как-же spider “юзает” winpdb
Детальное изучение “сорцов” наводит меня на некоторые открытия, о которых подробней:
Весь механизм взаимодействия Spider и winpdb строится на функциях “модуля” \spyderlib\plugins\editor.py и “инструментария” \spyderlib\utils\programs.py
а именно: editior.py содержит функции которые непосредственно отвечают за вызов winpdb и формирование необходимых аргументов,
вот некое “определение”
# from editor.py line 70
WINPDB_PATH = programs.get_nt_program_name('winpdb')
# from programs.py line 14
# needed imports:
# import os, sys, subprocess, imp, os.path as osp
def get_nt_program_name(name):
"""Return Windows-specific program name, i.e. adding '.bat' or '.exe'"""
if os.name == 'nt':
for ext in ('.exe', '.bat'):
if is_program_installed(name+ext):
return name+ext
return name
# from programs.py line 22
# needed imports:
# import os, sys, subprocess, imp, os.path as osp
def is_program_installed(basename, get_path=False):
"""Return True if program is installed and present in PATH"""
for path in os.environ["PATH"].split(os.pathsep):
abspath = osp.join(path, basename)
if osp.isfile(abspath):
if get_path:
return abspath
else:
return True
else:
return False
так как в финале всего происходит:
# from editor.py line 1659
def run_winpdb(self):
"""Run winpdb to debug current file"""
if self.save():
fname = self.get_current_filename()
programs.run_program(WINPDB_PATH, [fname])
# from programs.py line 34
# needed imports:
# import os, sys, subprocess, imp, os.path as osp
def run_program(name, args=[]):
"""Run program in a separate process"""
assert isinstance(args, (tuple, list))
path = is_program_installed(name, get_path=True)
if not path:
raise RuntimeError("Program %s was not found" % name)
subprocess.Popen([path]+args)
PS: http://code.google.com/p/spyderlib/downloads/list - Spider IDE