TKirt在Virtualenv

Jas*_*sch 30 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.
    >>> 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
Run Code Online (Sandbox Code Playgroud)

将TK安装到virtualenv的正确方法是什么?

A. *_*das 42

activate脚本中设置环境变量TCL_LIBRARY .在Windows(带有Tcl 8.5的Python 2.7)上,只需将此行添加到Scripts\activate.bat:

set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
Run Code Online (Sandbox Code Playgroud)

@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
Run Code Online (Sandbox Code Playgroud)

可以在askubuntu的这个问题上找到这个参考

  • 为了便于使用,我建议用`--system-site-packages`初始化`virtualenv`. (5认同)
  • 你会如何在Python 3中做到这一点? (3认同)

小智 10

我在运行linux mint的机器上使用python2.7和virtualenv.当我在virtualenv中运行需要matplotlib的应用程序时,我收到了OP提到的完全相同的错误."ImportError:没有名为_tkinter的模块,请安装python-tk包"

我最后使用上面帖子中的建议删除并重新创建了我的虚拟环境.这是我的步骤:

  1. 如果您的虚拟环境已激活,请运行此命令将需求冻结到您稍后可以访问的文件: pip freeze > requirements.txt
  2. 如果您的虚拟环境已激活,请使用以下命令停用它: deactivate
  3. 删除你的virtualenv文件夹.
  4. 使用以下命令安装python-tk: sudo apt-get install python-tk
  5. 使用以下方法重新创建您的virtualenv: virtualenv <nameofyourenv> --system-site-packages
  6. 接下来,激活你的virtualenv: source <virtual environment folder>/bin/activate
  7. 从requirements.txt文件恢复之前冻结的所有包: pip install -r <path to requirements.txt file>

现在,当我运行与以前相同的代码时,导入_tkinter没有问题.希望这可以帮助!感谢上面的每个人的建议.这对我帮助很大.


小智 9

我设法tkinter通过symlink tkinter文件夹集成python3到virtualenv virtualenv python3.我为我工作.但我不知道这是不是正确的方法.

  1. /usr/lib/python3.x/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so

  2. path/to/virtualenv/lib/python3.x/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so

  3. lib/python3.x/lib-dynload/

希望这可以帮助.

  • 如果您要使用sudo来安装它,我没有看到使用virtualenv的观点. (2认同)
  • sudo是安装Tk的二进制库.virtualenv只需要一个符号链接就可以知道要查找的位置. (2认同)

det*_*ead 5

这实际上是A. Rodas与Python 3.4和Tcl 8.6(我没有足够的声誉点来评论)的最佳答案的更新.

在激活脚本中设置环境变量TCL_LIBRARY.在Windows(带有Tcl 8.6的Python 3.4)上,只需将此行添加到Scripts\activate.bat:

set "TCL_LIBRARY=C:\Python34\tcl\tcl8.6"
Run Code Online (Sandbox Code Playgroud)

我在虚拟环境中使用Windows 7,Python 3.4和ggplot时遇到了这个问题.