tis-anaconda3

2021.5-23
Anaconda est une distribution libre des langages de programmation Python et R appliqué au développement d'applications dédiées à la science des données
11270 téléchargements
Télécharger Voir l'analyse de VirusTotal
tis-anaconda3 icon
  • package : tis-anaconda3
  • name : Anaconda Distribution (Python 3.x)
  • version : 2021.5-23
  • categories : Development,Education
  • maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ
  • editor : Anaconda, Inc.
  • licence : New BSD License
  • locale :
  • target_os : windows
  • impacted_process : _conda,pythonw
  • architecture : x64
  • signature_date : 2021-08-17 10:45
  • size : 497.60 Mo
  • installed_size : 5.37 Go
  • homepage : https://www.anaconda.com/
package           : tis-anaconda3
version           : 2021.5-23
architecture      : x64
section           : base
priority          : optional
name              : Anaconda Distribution (Python 3.x)
categories        : Development,Education
maintainer        : WAPT Team,Tranquil IT,Jimmy PELÉ
description       : Anaconda is a free and open-source distribution of the Python and R programming languages for scientific computing
depends           : 
conflicts         : 
maturity          : PROD
locale            : 
target_os         : windows
min_wapt_version  : 1.7
sources           : https://www.anaconda.com/products/individual
installed_size    : 5373984768
impacted_process  : _conda,pythonw
description_fr    : Anaconda est une distribution libre des langages de programmation Python et R appliqué au développement d'applications dédiées à la science des données
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 
editor            : Anaconda, Inc.
keywords          : anaconda,programming,scientific,computing,python,r,distribution
licence           : New BSD License
homepage          : https://www.anaconda.com/
package_uuid      : 06ffdf62-80b2-4057-b2fa-c7a2fa7458af
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://docs.anaconda.com/anaconda/reference/release-notes/
min_os_version    : 6.1
max_os_version    : 
icon_sha256sum    : b55165d2364b2eeb9de5a1a3dce776d46560302228154d603878c4f0a6c47fd5
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature         : zKjrsnBMO/ij2T4faJW+mvIQKL4ubJm1KBDH84DbDNF5ihgoGfiKOmNnnkBsGtRVlAs5fh4NkG6FnkBNBQSj2dKuEsv4GYkp5Lezs46n3ZvgT/PkZAGiFsLrymB9v6yyt0Dkqy859ue3mnsbK9wKUbascN9k4QTbIkePhlVD5uWdbkh6FPHrmEC7B2grP87wzRy99L+1IJ4cGe3jI/VR1ybT+p2eN6WkwkDHhNR7C3+5Z2aOA/Y/IFu2+peSVeJS0G4a3P1Y3bhGDZPcHhKIH+actYF4hzkdRlD7MH3f6nuHrJZqvmVmsL7PVlYVGaQ9UbTOdbZq6NGf884XFa8B6g==
signature_date    : 2021-08-17T10:45:52.563250
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
# -*- coding: utf-8 -*-
from setuphelpers import *
import time
import platform

#Anaconda3 2020.07 (Python 3.8.3 64-bit)    Anaconda3 2020.07 (Python 3.8.3 64-bit)     2020.07     "C:\ProgramData\Anaconda3\Uninstall-Anaconda3.exe"
# Installation procedure: https://docs.anaconda.com/anaconda/install/silent-mode/

uninstallkey = []

# Defining variables
bin_name_string = 'Anaconda3-%s-Windows-x86_64.exe'
app_dir = makepath(programfiles, 'Anaconda3')
conda_path = makepath(app_dir, 'Scripts', 'conda.exe')
conda_python = makepath(app_dir, 'python.exe')
#silent_args = '/S /InstallationType=AllUsers /AddToPath=1 /RegisterPython=0'
silent_args = '/S /InstallationType=AllUsers /AddToPath=1 /RegisterPython=0 /D=%s' % app_dir
app_uninstallkey_string = 'Anaconda3 %s (Python %s %s-bit)'


def install():
    # Initializing variables
    bin_name = glob.glob('%s*.exe' % bin_name_string.split('%s')[0])[0]
    package_version = bin_name.split('-')[1]
    if control.architecture == 'x64':
        arch = '64'
    else:
        arch = '32'

    # Uninstalling versions not located to the defined directory
    for uninstall in installed_softwares(name='Anaconda3'):
        if not uninstall['uninstall_string'].startswith('"%s' % app_dir):
            print('Uninstalling: %s' % uninstall['name'])
            run(uninstall_cmd(uninstall['key']))
            time.sleep(300)

    # Avoiding uninstall entry of older version to remain (uninstall before install is not necessary)
    for uninstall in installed_softwares(name='Anaconda3'):
        if Version(uninstall['version']) < Version(package_version):
            print('Removing uninstall entry: %s' % uninstall['key'])
            unregister_uninstall(uninstall['key'], win64app=False)
            unregister_uninstall(uninstall['key'], win64app=True)

    # Installing the package
    def conda_python_version():
        return get_version_from_binary(conda_python)

    # Checking manually if the application is installed
    if need_install(key=app_uninstallkey_string % (package_version, conda_python_version(), arch), min_version=package_version):
        print('Installing: %s' % bin_name)
        run('"%s" %s' % (makepath(basedir, bin_name), silent_args), timeout=1800)

        # Adding manually the uninstallkey
        uninstallkey.append(app_uninstallkey_string % (package_version, conda_python_version(), control.architecture.replace('x','')))
    else:
        print('%s is already installed' % app_uninstallkey_string % (package_version, conda_python_version(), control.architecture.replace('x','')))

    # Prevent interaction with waptpython (please make sure that the following code require the defined path)
    if "PYTHONHOME" in os.environ.keys():
        del os.environ["PYTHONHOME"]
    if "PYTHONPATH" in os.environ.keys():
        del os.environ["PYTHONPATH"]
    os.environ["PYTHONPATH"] = app_dir
    os.environ["PYTHONHOME"] = app_dir

    # Preinstalling Anaconda dependencies (procedure: https://docs.conda.io/projects/conda/en/latest/commands/install.html)
    print("Preinstalling Anaconda dependencies")
    print(run('"%s" install qt --quiet --offline --use-local --yes --prefix "%s"' % (conda_path, app_dir)))

    # Debugging information for Anaconda
    print("If you're experencing issues with Anaconda you may need to execute in cmd the following command:")
    print('"%s"' % makepath(app_dir,'Scripts','activate.bat'))

    # Rolling back WAPT Python Pathes (will ensure that WAPT install complete correctly)
    if "PYTHONHOME" in os.environ.keys():
        del os.environ["PYTHONHOME"]
    if "PYTHONPATH" in os.environ.keys():
        del os.environ["PYTHONPATH"]
    os.environ["PYTHONHOME"] = makepath(WAPT.wapt_base_dir)
    os.environ["PYTHONPATH"] = makepath(WAPT.wapt_base_dir)


def session_setup():
    print("Configuring: base options")

    # Initializing variables
    #C:\Users\username\.anaconda\navigator\anaconda-navigator.ini
    #C:\Users\jpadmin\AppData\Roaming\.anaconda\navigator\.anaconda\navigator\anaconda-navigator.ini
    #user_conf_dir = makepath(systemdrive,'Users', get_current_user(), '.anaconda', 'navigator')
    user_conf_dir = makepath(user_appdata,'.anaconda','navigator','.anaconda','navigator') # Path look glitchy but he's correct (at least in version 2020.11)
    user_conf_file = makepath(user_conf_dir, 'anaconda-navigator.ini')

    # Configuring options
    if not isdir(user_conf_dir):
        mkdirs(user_conf_dir)
    inifile_writestring(user_conf_file, 'main', 'first_time_offline', 'False')
    inifile_writestring(user_conf_file, 'main', 'offline_mode', 'True')
    inifile_writestring(user_conf_file, 'main', 'hide_offline_dialog', 'True')
    inifile_writestring(user_conf_file, 'main', 'first_run', 'False')
    inifile_writestring(user_conf_file, 'main', 'hide_update_dialog', 'True')
    inifile_writestring(user_conf_file, 'main', 'provide_analytics', 'False')
    inifile_writestring(user_conf_file, 'main', 'show_startup', 'False')
    inifile_writestring(user_conf_file, 'main', 'hide_quit_dialog', 'True')
    inifile_writestring(user_conf_file, 'main', 'hide_update_dialog', 'True')


def update_package():
    # Initializing variables
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    app_name = control.name
    url = 'https://www.anaconda.com/products/individual'
    if control.architecture == 'x64':
        arch = '64'
    else:
        arch = '32'

    # Getting latest version from official website
    print('URL used is: %s' % url)
    url_dl = bs_find(url, 'a', 'data-name', '%s-Bit Graphical Installer' % arch, proxies=proxies)['href']
    latest_bin = url_dl.split('/')[-1]
    version = latest_bin.split('-')[1]

    print("Latest %s version is: %s" % (app_name, version))
    print("Download url is: %s" % url_dl)

    # Downloading latest binaries
    if not isfile(latest_bin):
        print('Downloading: %s' % latest_bin)
        wget(url_dl, latest_bin, proxies=proxies)

        # Changing version of the package
        control.version = '%s-%s' % (version, control.version.split('-', 1)[-1])
        control.save_control_to_wapt()
        print('Changing version to: %s in WAPT\\control' % control.version)

    # Deleting outdated binaries
    remove_outdated_binaries(version)




def get_proxies():
    if platform.python_version_tuple()[0] == '3':
        from urllib.request import getproxies
    else:
        from urllib import getproxies
    return getproxies()


def get_proxies_from_wapt_console():
    proxies = {}
    if platform.system() == 'Windows':
        waptconsole_ini_path = makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini')
    else:
        waptconsole_ini_path = makepath(user_home_directory(), '.config', 'waptconsole', 'waptconsole.ini')
    if isfile(waptconsole_ini_path):
        proxy_wapt = inifile_readstring(waptconsole_ini_path, 'global', 'http_proxy')
        if proxy_wapt:
            proxies = {'http': proxy_wapt, 'https': proxy_wapt}
    return proxies


def get_version_from_binary(filename):
    if filename.endswith('.msi'):
        return get_msi_properties(filename)['ProductVersion']
    else:
        return get_file_properties(filename)['ProductVersion']


def remove_outdated_binaries(version, list_extensions=['exe','msi','deb','rpm','dmg','pkg'], list_filename_contain=None):
    if type(list_extensions) != list:
        list_extensions = [list_extensions]
    if list_filename_contain:
        if type(list_filename_contain) != list:
            list_filename_contain = [list_filename_contain]
    list_extensions = ['.' + ext for ext in list_extensions if ext[0] != '.']
    for file_ext in list_extensions:
        for bin_in_dir in glob.glob('*%s' % file_ext):
            if not version in bin_in_dir:
                remove_file(bin_in_dir)
            if list_filename_contain:
                for filename_contain in list_filename_contain:
                    if not filename_contain in bin_in_dir:
                        remove_file(bin_in_dir)


def bs_find(url, element, attribute=None, value=None, headers=None, proxies=None, features='html.parser', **kwargs):
    """"You may need to use a header for some websites. For example: headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'}
    """
    import requests
    page = requests.get(url, proxies=proxies, headers=headers, **kwargs).text
    try:
        import bs4 as BeautifulSoup
        soup = BeautifulSoup.BeautifulSoup(page, features=features)
    except:
        import BeautifulSoup
        soup = BeautifulSoup.BeautifulSoup(page)
    if value:
        return soup.find(element,{attribute:value})
    else:
        return soup.find(element)

93db42390444019e98b442ab281e1091671b6dce64daf08928d337ffc83cf3d2 : Anaconda3-2021.05-Windows-x86_64.exe
43730b539104ab58ea97caaa89df702f412f47e10060c3cbeed1cf352b37ce6c : setup.py
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
b55165d2364b2eeb9de5a1a3dce776d46560302228154d603878c4f0a6c47fd5 : WAPT/icon.png
6470347f594f8e94fa8486d358eccd348b0b4fd1d00005ad6007127c6ceff709 : WAPT/control