<UPDATE>
Никогда не заставлял IPython3 работать под Windows, но мне удалось заставить его работать на моем локальном сервере CentOS (после большого разочарования), в конечном итоге обнаружив абсолютно необходимый инструмент virtualenv . Не уверен, что virtualenv сработает и на Windows, но сейчас я доволен использованием IPython через SSH. </UPDATE>
Я новичок в Python и решил погрузиться в Python 3.2. Мне нравится, что язык поставляется со встроенным интерактивным переводчиком, но я ищу что-то более полнофункциональное, и IPython выглядит так, как будто он отвечает всем требованиям. Я установил Distribute и использовал следующую команду из моего каталога C:\Python32\Scripts\, чтобы получить яйцо:
easy_install http://archive.ipython.org/release/0.11/py3/ipython-0.11-py3.2.egg
Это завершилось успешно, хотя с тех пор выходные данные вышли за пределы моего порога прокрутки, поэтому я не могу произвести их здесь. Я запустил ipython3 --help
и создал экран справки, так что я знаю, что по крайней мере часть из них установлена правильно. Однако когда я выполняю ipython3
я получаю следующую ошибку:
$ ipython3
Error in sys.excepthook:
TypeError: _isdir() takes exactly 1 argument (0 given)
Original exception was:
Traceback (most recent call last):
File "c:\Python32\Scripts\ipython3-script.py", line 9, in <module>
load_entry_point('ipython==0.11', 'console_scripts', 'ipython3')()
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\terminal\ipapp.py", line 369, in launch_new_instance
app.initialize()
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\terminal\ipapp.py", line 283, in initialize
self.init_shell()
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\terminal\ipapp.py", line 303, in init_shell
ipython_dir=self.ipython_dir)
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\config\configurable.py", line 295, in instance
inst = cls(*args, **kwargs)
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\frontend\terminal\interactiveshell.py", line 112, in __init__
user_global_ns=user_global_ns, custom_exceptions=custom_exceptions
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\core\interactiveshell.py", line 384, in __init__
self.db = PickleShareDB(os.path.join(self.profile_dir.location, 'db'))
File "C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\utils\pickleshare.py", line 52, in __init__
if not self.root.isdir():
TypeError: _isdir() takes exactly 1 argument (0 given)
Кроме --help
я еще не нашел других аргументов, которые не приводят к этой ошибке. Я нашел "_isdir" в C:\Python32\lib\site-packages\ipython-0.11-py3.2.egg\IPython\ и нашел только две ссылки на него в файле с именем tempdir.py, оба показанные здесь:
# XXX (ncoghlan): The following code attempts to make
# this class tolerant of the module nulling out process
# that happens during CPython interpreter shutdown
# Alas, it doesn't actually manage it. See issue #10188
_listdir = staticmethod(_os.listdir)
_path_join = staticmethod(_os.path.join)
_isdir = staticmethod(_os.path.isdir)
_remove = staticmethod(_os.remove)
_rmdir = staticmethod(_os.rmdir)
_os_error = _os.error
def _rmtree(self, path):
# Essentially a stripped down version of shutil.rmtree. We can't
# use globals because they may be None'ed out at shutdown.
for name in self._listdir(path):
fullname = self._path_join(path, name)
try:
isdir = self._isdir(fullname)
И поиск того же каталога для "isdir" возвращает около 100 совпадений; около 50% из них используют 1 аргумент, остальные 0. Я не уверен, является ли это проблемой с наследованием или областью действия или чем, и при этом я не имею никакого представления о важности предыдущего подчеркивания. Поиск в Google "TypeError: _isdir()" не возвращает совпадений.
Есть идеи?