Python 我如何要求Tkinter和distutils?

Python 我如何要求Tkinter和distutils?,python,tkinter,distutils,Python,Tkinter,Distutils,我试图使用distutils编译一个程序,但我想确保用户在安装我的软件包之前安装了Tkinter 我的谷歌搜索没有找到任何有用的信息,任何线索我会怎么做 谢谢, Wayne您可以拥有一个从安装继承的类,然后执行以下操作: from distutils.command.install import install class Install(install): def run(self): if not check_dependencies():

我试图使用
distutils
编译一个程序,但我想确保用户在安装我的软件包之前安装了Tkinter

我的谷歌搜索没有找到任何有用的信息,任何线索我会怎么做

谢谢,
Wayne

您可以拥有一个从
安装继承的类,然后执行以下操作:

from distutils.command.install import install

class Install(install):
    def run(self):
        if not check_dependencies():
             # Tkinter was not installed, handle this here
        install.run(self) # proceed with the installation

def check_dependencies():
    try:
        return __import__('Tkinter')
    except ImportError:
        return None

Tkinter在中,它应该总是在那里。

不幸的是,没有标准的跨平台方式强制安装Tkinter
Tkinter
是Python标准库的一部分,因此,去掉
Tkinter
或其他标准库模块并将其打包为可选实体的分发服务器使用其自己的包管理工具进行打包,通常,您需要知道每个分发服务器的特定命令。一般来说,如果
Tkinter
(或
Python 3
中的
Tkinter
)不可导入,那么您可以做的最好的测试就是优雅地失败,例如:

import sys
try:
    import Tkinter
except ImportError:
    sys.exit("Tkinter not found")

是的,Tkinter在标准库中。虽然在某些平台(Ubuntu)上它不是默认安装的。Wayne,我在10.10上,它是默认安装的。而且,它是stdlib的一部分,所以如果Python在那里,它也应该在那里,对吗?它是什么时候被纳入stdlib的?我不知道,也许这就是问题所在。无论如何,上面的解决方案应该足够了。正如我在sukhbir的帖子中提到的——它不是默认安装在Ubuntu上的——你必须安装
PythonTK
软件包。至少上次我安装Ubuntu时,它不是。