当共享全局环境的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可以解决问题。
实际上,解决此问题的更好方法是将TCL_LIBRARY路径设置为
activate.bat或更改FixTk.py以了解有关virtualenv的信息。
Original Comment By: Roger Gammans
我也只是在activate.bat中设置环境变量TCL_LIBRARY路径。 因此,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中填写修复程序。 所有代码都是开源的,免费提供给您。
最有用的评论
在virtualenv 15.0.1中仍然是一个问题。
... 只是在说'