2012-05-14 21 views
11

Właśnie zainstalowałem graphics.py dla Pythona. Potem, kiedy próbowałem uruchomić następujący kod:Python tcl nie jest poprawnie zainstalowany

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() 

Moja interpreter dał mi ten dziwny informacje:

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. 

Co to oznacza? Co mogę zrobić?

PS: Używam Eclipse (PyDev) do kodowania.

+0

Czy zrobiłeś coś modnego do standardowej ścieżki Pythona? Zauważam, że wskazujesz tylko na niestandardowy obszar projektu. – jdi

+0

Powiązane [wersja konfliktu dla pakietu "Tk": mają 8.5.2, potrzebują dokładnie 8.5.15] (http://stackoverflow.com/questions/26706022/version-conflict-for-package-tk-have-8-5 -2-need-dokładnie-8-5-15), link wskazany przez [belkacem_py] (http://stackoverflow.com/users/7324887/belkacem-py) w poście NAA. –

Odpowiedz

5

dotyczące tego, co można zrobić, można spróbować edycji pliku init.tcl przeczytać coś jak package require Tcl 8.5.0-8.6, lub jeśli to nie zadziała można spróbować package require -exact Tcl 8.5.2. Musiałem również edytować mój plik tcl \ tk8.5 \ tk.tcl w ten sam sposób, dla Tk zamiast Tcl.

Jeśli edycji pliku nie działa dla Ciebie, można pobrać i zainstalować najnowszą Tcl od:

  • źródła przy użyciu najnowszej wersji z sourceforge. Będzie to wymagało posiadania akceptowalnego kompilatora. Na przykład, zobacz blog.victorjabur.com/2011/06/05/compiling-python-2-7-modules-on-windows-32-and-64-using-msvc-2008-express/ lub stackoverflow. com/questions/4218613/build-a-python-module-on-windows-using-ms-compiler.
  • z najnowszym ActiveState community version. To może być najłatwiejsza opcja, jeśli masz uprawnienia do instalacji. Widząc, że to jest dla CS 101, twoi administratorzy laboratorium mogą nie pozwolić ci na to (niezależnie od polityki lub technologii). Oczywiście prawdopodobnie oznacza to, że ta odpowiedź przychodzi zbyt późno, by zaspokoić twoją natychmiastową potrzebę.

Jeśli chodzi o to, co to znaczy, bez dodatkowych informacji, mogę teraz tylko sformułować przypuszczenia. Miałem odwrotny problem; Opowiem ci o tym w nadziei, że da ci wgląd w to, co to może znaczyć.

Mam zainstalowany 8.5.9, ale init.tcl wymagał 8.5.2. Zgaduję, że mój problem został spowodowany zainstalowaniem pythona ActiveState, oficjalnego pythona (zarówno 2.7, 64-bit), jak i/lub dodatkowych pakietów, które zainstalowałem później. Na dole this download page znajduje się notatka dotycząca Tcl/Tk na MacOS, którą można zinterpretować w ten sposób, że na komputerze jest miejsce na problemy. ActiveState Python 2.7 zawiera Tcl/Tk 8.5.9, zgodnie z dokumentacją here. Używając 7-zip do otwierania plików msi z ActiveState i Python.org, i grepping dla "tcl", a następnie "require", widzę, że init.tcl w ActiveState msi określa package require -exact Tcl 8.5.9.

Domyślam się, że wymaganie w wersji 8.5.2 pochodzi z regularnej instalacji pythona (która jest widocznie mniej podszyta) lub z jakiegoś pakietu, który zainstalowałem później. Uruchamianie ActiveState msi w trybie naprawy nie rozwiązuje problemu, ani nie uruchamia msi Pythona w trybie naprawy.

P.S Jeśli to nie jest aktualne, dlaczego nadal odpowiadam? Stworzenie przyzwoitej odpowiedzi pomogło mi lepiej zrozumieć mój problem.

1

Napotkałem ten sam problem podczas ostatniej instalacji ns2.35 w Ubuntu 11.04. Po zainstalowaniu ns2.35 otrzymałem komunikat o pomyślnej instalacji ns. Następnie ustawiam ścieżkę w pliku /.bashrc. Następnie dałem polecenie ns, które dało mi ten sam błąd, który otrzymałeś.

Problem polega na tym, że plik wykonywalny ns znajduje się również w katalogu/usr, który jest w konflikcie.

Rozwiązanie:

  1. Przejdź do lokalizacji root-usr-local-bin podając następujące polecenie w terminalu cd/usr/local/bin
  2. Nie można znaleźć pliku ns. Musimy go usunąć, wydając następujące polecenie: rm ns
  3. To wszystko, gotowe. Teraz twój ns zaczyna działać z powodzeniem.
1

Być może problem ze zgodnością z innym programem korzystającym ze zmiennej środowiskowej TCL_Library. W załączonym wątku zmieniłem ścieżkę zmiennej środowiskowej i poprawiono mój problem. Może to być istotne dla swojego problemu:

Python IDLE won´t start

+0

Ustawienie 'TCL_Library' na' c:/python276/tcl/tcl8.5' działa dla mnie. – minghua

0

Rozwiązanie PATH did't pracę dla mnie. Używam Win7 python 2.7. końcu edytowany 2 pliki: C: \ Python27 \ tcl \ tk8.5 \ tk.tcl package require -exact Tk 8.5.2 zmiana w package require Tk 8.5.0-8.6

C: \ Python27 \ tcl \ tcl8.5 \ init.tcl package require -exact Tcl 8.5.2 zmień na package require Tcl 8.5.0-8.6

To działa! Wcześniej mój IDLE nigdy się nie wyskakiwał, ale teraz działa również. Fajnie, dziękuję @ Jonathan Spooner i @hlongmore

1

Używam PyCharm IDE z Pythonem 2.7. Wewnątrz c: \ Python27 \ TCL \ tcl8.5 \ init.tcl "pakiet wymaga -exact Tcl 8,5 ". Zmiana

package require -exact Tcl 8.5.9 

Wewnątrz c: \ Python27 \ TCL \ tk8.5 \ tk .tcl "pakiet wymaga -exact Tk 8.5 ." zmiana:

package require -exact Tcl 8.5.9 

ten pracował dla mnie.

0

Myślę, że miałem ten sam problem pod Windows 8/python2.7. To było piekło instalacji i ustawienia zmiennych env. Wszystkie są bezwartościowe. Dziś znalazłem rozwiązanie:

pobierania i instalowania Pythona na D: (w celu zachowania mojej instalacji), a następnie kopiując folder Tcl do mojego C: instalacja w takim samym położeniu względnym: C: \ Python27

3

I sloved modyfikując mój skrypt Włączanie:

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

miałem podobny problem podczas generowania prosty wykres punktowy przy użyciu mayplotlib.pyplot w Windows 10.i rozwiązany poprzez dodanie nowych zmiennych środowiskowych w „panel sterowania> system i zabezpieczenia> System> Zaawansowane ustawienia systemu> Zmienne środowiskowe> Zmienne użytkownika dla \ ":

Nazwa zmiennej: TCL_LIBRARY, Zmienna wartość = C: \ Python27 \ tcl \ tcl8.5 Nazwa zmiennej: TK_LIBRARY, Zmienna wartość = C: \ Python27 \ tcl \ tk8.5

Powiązane problemy