Virtualenv: Tkinter - сбой в виртуальной среде

Созданный на 14 мар. 2011  ·  12Комментарии  ·  Источник: pypa/virtualenv

Когда virtualenv, который разделяет пакеты сайтов глобальной среды, используется для приложения на основе Tk с использованием глобального Tk.

Tkinter не может правильно инициализироваться в virtualenv, так как он не может правильно искать свои ресурсы, которые все еще находятся в глобальной среде Python.

\Documents and Settings\Roger\Desktop\windows-install-bits>cd \venvtest

C:\venvtest>Scripts\activate.bat
(venvtest) C:\venvtest>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> f= Tk()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Tk' is not defined
>>> f= Tkinter.Tk()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Python26\Lib\lib-tk\Tkinter.py", line 1643, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, want
objects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following directories:
    c:/Python26/lib/tcl8.5 c:/venvtest/lib/tcl8.5 c:/lib/tcl8.5 c:/venvtest/libr
ary c:/library c:/tcl8.5.2/library c:/tcl8.5.2/library



This probably means that Tcl wasn't installed properly.

>>> ^Z


(venvtest) C:\venvtest>deactivate

Я ожидаю, что виртуальная среда будет работать так же, как глобальная среда, например: -

C:\venvtest>c:\Python26\python.exe
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
>>> f = Tkinter.Tk()
>>> ^Z


C:\venvtest>

После некоторых экспериментов я обнаружил, что копирование каталогов c: \ python26 \ tcl {tcl, tk} 8.5 в c: \ venvtest \ Libs решает проблемы.


Самый полезный комментарий

По-прежнему проблема в virtualenv 15.0.1.
... просто говорю'

Все 12 Комментарий

На самом деле лучший способ исправить это - установить путь TCL_LIBRARY в
activate.bat или изменить FixTk.py, чтобы узнать о файлах virtualenv.


Original Comment By: Roger Gammans

Я тоже просто устанавливаю путь переменной окружения TCL_LIBRARY в activate.bat. Итак, все, что нужно сделать virtualenv, - это добавить эту строку в файл activate.bat автоматически.

По этой проблеме также есть поток в stackoverflow:
http://stackoverflow.com/questions/15884075/tkinter-in-a-virtualenv

Я также просто установил переменную среды в activate.bat. Однако было бы здорово, если бы это делалось автоматически.

По-прежнему проблема в virtualenv 15.0.1.
... просто говорю'

Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Просто добавьте комментарий, если хотите, чтобы он оставался открытым. Спасибо за ваш вклад.

Похоже, это все еще проблема

Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Просто добавьте комментарий, если хотите, чтобы он оставался открытым. Спасибо за ваш вклад.

Это все еще проблема. Я столкнулся с этим совсем недавно на Mac - исправление для https://github.com/pypa/virtualenv/issues/93 не решило проблему на Mac.

Кому-то нужно повторно активировать эту проблему. Просто потому, что он сидел без дела, это не значит, что это больше не проблема. Это просто означает, что сопровождающие проекта не расставили приоритеты, как следовало бы.

В Windows по-прежнему проблема с Python 2.7, но, похоже, решена в Python 3.8 с помощью модуля venv .

Пожалуйста, не стесняйтесь сообщать о новой проблеме с сообщением об ошибке, инструкциями по воспроизведению и информацией о том, как вы установили Python.

Это просто означает, что сопровождающие проекта не расставили приоритеты, как следовало бы.

Учитывая, что сопровождающим проекта не платят, и они делают это бесплатно в свое личное время, я не верю, что вы можете говорить о they should . Если эта проблема является проблемой для вас, рассмотрите возможность заполнения PR с исправлением. Весь код имеет открытый исходный код и находится в свободном доступе для вас.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги