Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 虚拟世界中的特金特_Python_Tkinter_Virtualenv - Fatal编程技术网

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

尝试从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
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
    

    从virtualenv
    lib/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