Python 虚拟世界中的特金特
尝试从virtualenv使用基于TKinter的小部件运行python代码Python 虚拟世界中的特金特,python,tkinter,virtualenv,Python,Tkinter,Virtualenv,尝试从virtualenv使用基于TKinter的小部件运行python代码 user@computer:~/myproject$ env/bin/python Python 2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> impo
user@computer:~/myproject$ env/bin/python Python
2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
raise ImportError, str(msg) + ', please install the python-tk package' ImportError: No module named _tkinter, please install the python-tk package
user@computer:~/myproject$env/bin/python
2.7.3(默认,2012年9月26日,21:51:14)[GCC 4.7.2]在linux2上键入“帮助”、“版权”、“信用证”或“许可证”以了解更多信息。
>>>进口Tkinter
回溯(最近一次调用):文件“/usr/lib/python2.7/lib tk/Tkinter.py”中第1行的文件“”,第42行,在
提升ImportError,str(msg)+',请安装python tk包“ImportError:没有名为_tkinter的模块,请安装python tk包”
将TK安装到virtualenv的正确方法是什么?在
激活脚本中设置环境变量TCL\u库。在Windows(Python 2.7和Tcl 8.5)上,只需将这一行添加到Scripts\activate.bat
:
set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
@Jasper van den Bosch的编辑:在Ubuntu上,对脚本activate
的修改如下:
TK_LIBRARY=/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages/PIL:/usr/lib
TKPATH=/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages/PIL:/usr/lib
TCL_LIBRARY=/usr/lib
export TCL_LIBRARY TK_LIBRARY TKPATH
可以在上找到这篇文章的参考资料。这确实是对A.Rodas关于Python 3.4和Tcl 8.6的伟大答案的更新(我没有足够的信誉点来评论)
在激活脚本中设置环境变量TCL_LIBRARY。在Windows(Python 3.4和Tcl 8.6)上,只需将这一行添加到Scripts\activate.bat:
set "TCL_LIBRARY=C:\Python34\tcl\tcl8.6"
在虚拟环境中使用Windows 7、Python 3.4和ggplot时,我遇到了这个问题。也是answer by的一个更新-我曾尝试在Windows 7中使用Windows Powershell这样做,但未能完成(我也没有足够的信誉点发表评论)
我意识到即使我加了一行
设置“TCL\u LIBRARY=C:\Python27\TCL\tcl8.5”
tk库对应的一个,到activate.bat
脚本,tcl链接没有得到更新,我需要做的只是转到它查找tcl文件的目录,并将相应的tcl和tk文件复制到该目录。现在该文件位于默认位置,因此您不需要更新activate.bat
每次创建新环境时要在powershell中工作,必须编辑activate.ps1文件,而不是activate.bat。只需将以下内容添加到activate.ps1:
$env:TCL\u LIBRARY=“C:\Python27\TCL\tcl8.5”
我通过将python3中的tkinter
文件夹链接到virtualenv-python3
来将tkinter
集成到virtualenv,但我不知道这是不是正确的方法
安装tkinter
sudo-apt-get-install-python3-tk
转到virtualenv的python库文件夹
cd~/.virtualenvs/cv/lib/python3.4/
链接tkinter
ln-s/usr/lib/python3.4/tkinter-tkinter
希望这有帮助
在python的更高版本中,这可能会导致
ModuleNotFoundError:没有名为“\u tkinter”的模块
在这种情况下,请确保也使用符号链接
/usr/lib/python3.x/lib dynload/\u tkinter.cpython-36m-x86\u 64-linux-gnu.so
作为
path/to/virtualenv/lib/python3.x/lib-dynload//u tkinter.cpython-36m-x86\u 64-linux-gnu.so
使用
ln-s/usr/lib/python3.x/lib-dynload//u tkinter.cpython-36m-x86\u 64-linux-gnu.so\u tkinter.cpython-36m-x86\u 64-linux-gnu.so
从virtualenvlib/python3.x/lib dynload/
目录中。对我来说,解决方案是从
C:\Users\{myUser}\Python3.5\tcl
到
用您的特定目录名替换{myUser}和{myVirtualEnv}。我正在运行linux mint的机器上使用python2.7和virtualenv。
在我的virtualenv中运行需要matplotlib的应用程序时,我收到了与OP提到的完全相同的错误。“ImportError:没有名为_tkinter的模块,请安装python tk包”
最后,我使用上述帖子中的建议删除并重新创建了我的虚拟环境。以下是我的步骤:
如果您的虚拟环境已激活,则运行此命令将需求冻结到您以后可以访问的文件:
pip freeze>requirements.txt
如果您的虚拟环境已激活,请使用以下方法将其停用:
停用
删除您的virtualenv文件夹
使用以下方法安装python tk:
sudo-apt-get-install-python-tk
使用以下方法重新创建您的virtualenv:
virtualenv——系统站点包
接下来,激活您的virtualenv:
source/bin/activate
从requirements.txt文件中恢复先前冻结的所有软件包:
pip安装-r
现在,当我运行与以前相同的代码时,导入_tkinter没有问题。希望这有帮助!多亏了上面大家的建议。这对我帮助很大。克隆cpython项目
git clone git@github.com:python/cpython.git
cd
到cpython目录。
git checkout
所需的虚拟环境版本(对我来说是3.4),
并用
./configure
make
make test
sudo make install
您将在build/
目录的子目录中找到一个so文件\u tkinter.cpython xxx.so
,将其复制到venv的lib dynload
目录中。(对我来说,它是~/tf1.1py3.4/lib/python3.4/lib dynload/
)如果这有助于那些在阅读了这里的所有答案后挠头的人-如果您在安装python3.6-tk
之前创建了虚拟机,那么您可能还需要重新创建虚拟机。指定tk_路径
和TCL_路径
的解决方案似乎都不起作用,即使使用ttkinter在虚拟环境之外给出的路径(请参阅)。可以肯定的是,只需删除venv并创建一个新的。我对TKinter
不太了解,但我在尝试让wxPython
和pyGTK
在virtualenv
中工作时遇到了类似的问题。我从未找到一种令人满意的方法将它们安装到virtualenv中代码
./configure
make
make test
sudo make install