Как направить tkinter искать в другом месте библиотеку Tcl / Tk (чтобы избежать разбитой библиотеки без переустановки) - PullRequest
4 голосов
/ 30 июня 2009

Я написал скрипт на Python, который использует Tkinter. Я хочу развернуть этот скрипт на нескольких компьютерах под управлением Mac OS 10.4.11. Но эта сборка MAC OS X, похоже, не работает с TCL / TK. Даже загрузка пакета дает мне:

Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: dlopen(/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/lib-dynload/_tkinter.so   2): Symbol not found: _tclStubsPtr
Referenced from: /System/Library/Frameworks/Tk.framework/Versions/8.4/Tk
Expected in: /System/Library/Frameworks/Tcl.framework/Versions/8.4/Tcl

Переустановка TCL / TK невозможна, так как мы находимся в офисе, и нам нужно, чтобы ИТ-персонал приходил на каждый компьютер, что не позволило бы людям использовать сценарий.

Есть ли какой-нибудь простой способ направить Tkinter в другое место для поиска инфраструктуры TK / TCL? Я скачал отдельную версию Tcl / Tk Aqua , но я не знаю, как контролировать, какой фреймворк использует Tkinter ...

Спасибо за помощь.

Адам

1 Ответ

1 голос
/ 04 июля 2009

Вы можете изменить, где ваша система ищет динамические / общие библиотеки, изменив DYLD_LIBRARY_PATH в вашей среде перед запуском Python. Вы можете сделать это в Терминале так:

$ DYLD_LIBRARY_PATH=<insert path here>:$DYLD_LIBRARY_PATH python

... или создайте обертку:

#!/bin/sh
export DYLD_LIBRARY_PATH=<insert path here>:$DYLD_LIBRARY_PATH
exec python "$@"

Документацию для DYLD_LIBRARY_PATH можно найти на справочной странице dyld .

Не не установите это значение в .bashrc или любом другом профиле или общесистемной настройке, поскольку это может вызвать некоторые неприятные проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...