Как мне требовать Tkinter с distutils? - PullRequest
1 голос
/ 24 ноября 2010

Я пытаюсь скомпилировать программу, используя distutils, но я хочу убедиться, что пользователь установил Tkinter перед установкой моего пакета.

В моих поисках Google не удалось найти какую-либо полезную информацию,какая-нибудь подсказка, как бы я это сделал?

Спасибо, Уэйн

Ответы [ 3 ]

2 голосов
/ 24 ноября 2010

Вы можете иметь класс, который наследуется от install, а затем сделать это:

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
0 голосов
/ 24 ноября 2010

К сожалению, не существует стандартного кроссплатформенного способа принудительно установить Tkinter. Tkinter является частью стандартной библиотеки Python, поэтому распространители, которые удаляют Tkinter или другие модули стандартной библиотеки и упаковывают их как необязательные объекты, делают это, используя свои собственные инструменты управления пакетами, и, как правило, вам необходимо знать конкретные команды для каждого распределения. Лучшее, что вы можете сделать в целом, это выполнить тестирование и выполнить его изящно, если Tkinter (или tkinter в Python 3) не импортируется, поэтому что-то вроде:

import sys
try:
    import Tkinter
except ImportError:
    sys.exit("Tkinter not found")
0 голосов
/ 24 ноября 2010

Tkinter находится в стандартной библиотеке python , он должен всегда .

...