Python tcl установлен неправильно

Я только что установил graphics.py для python. Затем, когда я попытался запустить следующий код:

    from graphics import *

    def main():
        win = GraphWin("My Circle", 100, 100)
        c = Circle(Point(50,50), 10)
        c.draw(win)
        win.getMouse() # Pause to view result
        win.close()    # Close window when done

    main()

Мой интерпретатор дал мне эту странную информацию:

Traceback (most recent call last):
File "F:\CS 101\Python\projects\packer.py", line 8, in <module>
from graphics import *
File "F:\CS 101\Python\lib\site-packages\graphics.py", line 168, in <module>
_root = tk.Tk()
File "F:\CS 101\Python\lib\tkinter\__init__.py", line 1674, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects,                            useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories: 
{F:\CS 101\Python\tcl\tcl8.5.9} {F:/CS 101/Python/tcl/tcl8.5} {F:/CS        101/Python/lib/tcl8.5} {F:/CS 101/lib/tcl8.5} F:/lib/tcl8.5 {F:/CS 101/library} F:/library     F:/tcl8.5.2/library F:/tcl8.5.2/library

F:/CS 101/Python/tcl/tcl8.5/init.tcl: version conflict for package "Tcl": have 8.5.2,            need exactly 8.5.9
version conflict for package "Tcl": have 8.5.2, need exactly 8.5.9
while executing
"package require -exact Tcl 8.5.9"
(file "F:/CS 101/Python/tcl/tcl8.5/init.tcl" line 20)
invoked from within
"source {F:/CS 101/Python/tcl/tcl8.5/init.tcl}"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly.

Что это значит? Что я могу сделать?

PS: Я использую Eclipse (PyDev) для кодирования.

Ответ 1

Что вы можете сделать, вы можете попробовать отредактировать файл init.tcl, чтобы прочитать что-то вроде package require Tcl 8.5.0-8.6, или если это не сработает, вы можете попробовать package require -exact Tcl 8.5.2. Мне также пришлось отредактировать файл tcl\tk8.5\tk.tcl так же, как и Tk вместо Tcl.

Если редактирование файла не работает для вас, вы можете загрузить и установить последнюю версию Tcl:

  • используя последнюю версию sourceforge. Для этого потребуется наличие приемлемого компилятора. Например, см. Blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/или stackoverflow.com/questions/4218613/строительство-а-питон-модуля на окнах, используя мс-компилятор.
  • последняя версия сообщества ActiveState. Это может быть самый простой вариант, если у вас есть разрешение на установку. Увидев, что это для CS 101, администраторы вашей лаборатории могут не разрешить вам это разрешение (будь то политикой или технологией). Конечно, это также, вероятно, означает, что этот ответ приходит слишком поздно, чтобы помочь с вашей непосредственной потребностью.

В отношении того, что это означает, без дополнительной информации я могу только сделать догадки прямо сейчас. У меня была обратная проблема; Я расскажу вам об этом в надежде, что это даст вам некоторое представление о том, что это может означать.

У меня установлен 8.5.9, но для init.tcl требуется 8.5.2. Я предполагаю, что моя проблема была вызвана установкой ActiveState python, затем официальным python (как 2.7, 64-разрядным), так и/или дополнительными пакетами, которые я установил позже. В нижней части этой страницы загрузки есть примечание относительно Tcl/Tk на MacOS, которое можно интерпретировать как означающее, что есть место для проблем на ПК. ActiveState Python 2.7 включает в себя Tcl/Tk 8.5.9, как описано здесь. Используя 7-zip, чтобы открыть файлы msi из ActiveState и Python.org и grepping для "tcl", а затем "require", я вижу, что init.tcl в ActiveState msi указывает package require -exact Tcl 8.5.9.

Я предполагаю, что требование 8.5.2 исходило из обычной установки python (которая, по-видимому, менее grepable), или какой-то пакет, который я установил позже. Запуск ActiveState msi в режиме восстановления не устраняет проблему и не запускает Python msi в режиме восстановления.

P.S Если это не своевременно, почему я все еще отвечаю? Создание достойного ответа помогло мне лучше понять мою проблему.

Ответ 2

Я нажал, изменив свой активированный script:

set "TCL_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"
set "TK_LIBRARY=D:\Program Files (x86)\Python3.5\tcl\tcl8.6"

Ответ 3

У меня возникла та же проблема во время последней установки ns2.35 в ubuntu 11.04. После установки ns2.35 получил сообщение об успешной установке ns. Затем я устанавливаю путь в /.bashrc. Затем я дал команду ns, которая дала мне ту же ошибку, которую вы получили.

Проблема заключается в том, что исполняемый файл ns также находится в /usr, который конфликтует.

Решение:

  • Перейдите в папку root-usr-local-bin, указав следующую команду в терминале cd/usr/local/bin
  • Там вы найдете файл ns. Нам просто нужно удалить его, указав следующую команду rm ns
  • Вот так, все готово. Теперь ваши ns запускаются успешно.

Ответ 4

Возможно, проблема совместимости с другой программой, использующей переменную среды TCL_Library. В прикрепленном потоке я изменил путь переменной окружения, и он исправил мою проблему. Это может иметь отношение к вашей проблеме:

Python IDLE не запускается

Ответ 5

Я запускаю PyCharm IDE с Python 2.7. Внутри c:\Python27\tcl\tcl8.5\init.tcl "пакет требует -exact Tcl 8.5. 2" изменить на

package require -exact Tcl 8.5.9

Внутри c:\Python27\tcl\tk8.5\tk.tcl "пакет требует -exact Tk 8.5. 2" изменить на:

package require -exact Tcl 8.5.9

Это сработало для меня.

Ответ 6

Решение PATH не работало для меня. Я использую Win7 python 2.7. Наконец я отредактировал 2 файла: C:\python27\TCL\tk8.5\tk.tcl package require -exact Tk 8.5.2 превращаться в  package require Tk 8.5.0-8.6

C:\python27\TCL\tcl8.5\init.tcl package require -exact Tcl 8.5.2 превращаться в package require Tcl 8.5.0-8.6

И это работает! Раньше мой IDLE никогда не выскакивал, но теперь он работает. Прохладный, спасибо @Jonathan Spooner и @hlongmore

Ответ 7

Я думаю, что у меня была такая же проблема под windows8/python2.7. Это была чертовски инсталляция и настройка переменных env. Все они бесполезны. Сегодня я нашел решение:

Загрузка и установка python в D: (для сохранения моей установки), а затем копирование папки Tcl в мою установку C: в той же относительной позиции: C:\Python27

Ответ 8

У меня была аналогичная проблема при создании простого графика рассеяния с использованием файла mayplotlib.pyplot в Windows 10. Я решил добавить новые переменные среды в "Панель управления > Система и безопасность > Системa > Расширенные системные настройки > Переменные среды > Пользовательские переменные для \":

Имя переменной: TCL_LIBRARY, значение переменной = C:\Python27\tcl\tcl8.5 Имя переменной: TK_LIBRARY, значение переменной = C:\Python27\tcl\tk8.5

Ответ 9

Чтобы дать более общее решение, в трассировке ошибок должно быть что-то вроде:

C: /Users/[perso path]/tcl/tcl8.6/init.tcl: конфликт версий для пакета "Tcl": есть 8.6.6, нужен точно конфликт версии 8.6.8 для пакета "Tcl": есть 8.6.6 нужно ровно 8.6.8

Поэтому просто откройте файл, описанный в ошибке: C: /Users/[perso path]/tcl/tcl8.6/init.tcl и замените package require -exact Tcl 8.6.8 версией, необходимой для ошибки, для меня это было 8.6.6: package require -exact Tcl 8.6.6.

Тогда та же проблема произойдет с Tk (с другим файлом), я сделал те же операции, и это сработало. Может быть, у вас не будет одинаковых версий, просто замените их.