def pip_install(package_name): hide_splash_if_necessary() if executable_is_in_path('pip'): cmd = '%s install' % shell_escape(get_executable_path('pip')) else: cmd = shell_escape(sys.executable) + ' -m pip install' return run_install_command_as_root(qt_available(), cmd, package_name)
def linux_fedora_install(package_name): qt = qt_available() hide_splash_if_necessary() if qt: cmd = shell_escape(vistrails_root_directory() + '/gui/bundles/linux_fedora_install.py') else: cmd = 'yum -y install' return run_install_command(qt, cmd, package_name)
def linux_debian_install(package_name): qt = qt_available() try: import apt import apt_pkg except ImportError: qt = False hide_splash_if_necessary() if qt: cmd = shell_escape(vistrails_root_directory() + '/gui/bundles/linux_debian_install.py') else: cmd = '%s install -y' % ( 'aptitude' if executable_is_in_path('aptitude') else 'apt-get') return run_install_command(qt, cmd, package_name)
def linux_debian_install(package_name): qt = qt_available() try: import apt import apt_pkg except ImportError: qt = False hide_splash_if_necessary() if qt: cmd = shell_escape(vistrails_root_directory() + '/gui/bundles/linux_debian_install.py') else: cmd = '%s install -y' % ('aptitude' if executable_is_in_path('aptitude') else 'apt-get') return run_install_command(qt, cmd, package_name)
def pip_install(package_name): hide_splash_if_necessary() if executable_is_in_path('pip'): cmd = '%s install' % shell_escape(get_executable_path('pip')) else: cmd = shell_escape(sys.executable) + ' -m pip install' if systemType != 'Windows': use_root = True try: from distutils.sysconfig import get_python_lib f = get_python_lib() except Exception: f = sys.executable use_root = os.stat(f).st_uid == 0 else: use_root = False return run_install_command(qt_available(), cmd, package_name, use_root)
def show_question(which_files, has_distro_pkg, has_pip): if isinstance(which_files, basestring): which_files = [which_files] if qt_available(): from PyQt4 import QtCore, QtGui dialog = QtGui.QDialog() dialog.setWindowTitle("Required packages missing") layout = QtGui.QVBoxLayout() label = QtGui.QLabel( "One or more required packages are missing: %s. VisTrails can " "automatically install them. If you click OK, VisTrails will " "need administrator privileges, and you might be asked for " "the administrator password." % (" ".join(which_files))) label.setWordWrap(True) layout.addWidget(label) if pip_installed and has_pip: use_pip = QtGui.QCheckBox("Use pip") use_pip.setChecked( not has_distro_pkg or ( has_pip and getattr(get_vistrails_configuration(), 'installBundlesWithPip'))) use_pip.setEnabled(has_distro_pkg and has_pip) layout.addWidget(use_pip) remember_align = QtGui.QHBoxLayout() remember_align.addSpacing(20) remember_pip = QtGui.QCheckBox("Remember my choice") remember_pip.setChecked(False) remember_pip.setEnabled(use_pip.isEnabled()) remember_align.addWidget(remember_pip) layout.addLayout(remember_align) elif has_pip: label = QtGui.QLabel("pip package is available but pip is not installed") layout.addWidget(label) buttons = QtGui.QDialogButtonBox( QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel) QtCore.QObject.connect(buttons, QtCore.SIGNAL('accepted()'), dialog, QtCore.SLOT('accept()')) QtCore.QObject.connect(buttons, QtCore.SIGNAL('rejected()'), dialog, QtCore.SLOT('reject()')) layout.addWidget(buttons) dialog.setLayout(layout) hide_splash_if_necessary() if dialog.exec_() != QtGui.QDialog.Accepted: return False else: if pip_installed and has_pip: if remember_pip.isChecked(): setattr(get_vistrails_persistent_configuration(), 'installBundlesWithPip', use_pip.isChecked()) if use_pip.isChecked(): return 'pip' return 'distro' else: print "\nRequired package(s) missing: %s" % (" ".join(which_files)) print ("A required package is missing, but VisTrails can " "automatically install it. " "If you say Yes, VisTrails will need " "administrator privileges, and you " "might be asked for the administrator password.") if has_distro_pkg: print "(VisTrails will use your distribution's package manager)" else: print "(VisTrails will use the 'pip' installer)" print "Give VisTrails permission to try to install package? (y/N)" v = raw_input().upper() if v == 'Y' or v == 'YES': if has_distro_pkg: return 'distro' else: return 'pip'