【问题标题】:RHEL7 import tkinter failed inside virtualenvRHEL7 import tkinter 在 vi​​rtualenv 中失败
【发布时间】:2018-08-23 08:13:05
【问题描述】:

在 Redhat 7 和 python3.6 上

我可以毫无错误地导入 tkinter:

Python 3.6.5 (default, Jul 25 2018, 21:22:33)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>>

在新的虚拟环境中

Python 3.6.4 (default, Jul 20 2018, 12:22:32)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/ocr1/CRNN_Tensorflow/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
>>>

附:这是一个全新的 virtualenv,由virtualenv &lt;name_of_env&gt; 命令创建。

【问题讨论】:

    标签: python-3.x tkinter virtualenv rhel


    【解决方案1】:

    我最终找到了两种不同的方法来解决我的问题。

    1.确保创建的 virtualenv 使用相同的 python 版本

    从我上面的例子来看,virtualenv版本的python是Python 3.6.4,但我机器的python版本实际上是Python 3.6.5。

    因此,virtualenv &lt;name_of_env&gt; 是使用 Python 3.6.4 的 lib 创建的。解决这个问题可以使用

    virtualenv -p &lt;PYTHON_EXE&gt;, --python=PYTHON_EXE &lt;name_of_env&gt;

    virtualenv --python=&lt;PYTHON_EXE&gt; &lt;name_of_env&gt;

    指定python exe的位置。

    并使用选项--system-site-packages 包含系统模块。 (归功于 Rob T. 上面的回答)

    2。直接从lib复制你需要的包

    这个方法实际上有点棘手。直接进入机器pythonlib目录,把需要的包复制到virtualenv pythonlib目录

    例如:

    cd /usr/lib/python3.6.5

    cp -a ./tkinter /my_project/venv/lib/

    【讨论】:

      【解决方案2】:

      由于您使用的是虚拟环境,因此您从没有任何系统包的“干净”Python 环境开始。这有助于使虚拟环境隔离、稳定和可重现。

      你有两个选择:

      1. 使用pip install 在虚拟环境中安装 tkinter 和任何其他依赖项。
      2. 在创建包含系统模块的虚拟环境时使用选项--system-site-packages

      第二个选项更简单,因为您不需要重新安装任何东西。但是,首选第一个选项,尤其是当您使用requirements.txtpip freeze 时。然后,您可以轻松地在另一个系统上重新创建该虚拟环境。

      How to install Python 3, venv, virtualenv, and pipenv on RHEL有一些提示可以帮助你

      【讨论】:

      • 感谢您的回答罗。但是,所有标准 Python 发行版都包含 tkinter。所以你不能用 pip pip install tkinter。
      猜你喜欢
      • 2017-03-26
      • 1970-01-01
      • 2016-09-19
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多