def make_initialize_plan(conda_prefix, shells, for_user, for_system, anaconda_prompt): plan = make_install_plan(conda_prefix) shells = set(shells) if shells & {'bash', 'zsh'}: if 'bash' in shells and for_user: bashrc_path = expand(join('~', '.bash_profile' if on_mac else '.bashrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': bashrc_path, 'conda_prefix': conda_prefix, 'shell': 'bash', }, }) if 'zsh' in shells and for_user: zshrc_path = expand(join('~', '.zshrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': zshrc_path, 'conda_prefix': conda_prefix, 'shell': 'zsh', }, }) if for_system: plan.append({ 'function': init_sh_system.__name__, 'kwargs': { 'target_path': '/etc/profile.d/conda.sh', 'conda_prefix': conda_prefix, }, }) if 'fish' in shells: if for_user: config_fish_path = expand(join('~', '.config', 'config.fish')) plan.append({ 'function': init_fish_user.__name__, 'kwargs': { 'target_path': config_fish_path, 'conda_prefix': conda_prefix, }, }) if for_system: raise NotImplementedError() if 'tcsh' in shells: if for_user: raise NotImplementedError() if for_system: raise NotImplementedError() if 'powershell' in shells: if for_user: raise NotImplementedError() if for_system: raise NotImplementedError() if 'cmd.exe' in shells: if for_user: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_CURRENT_USER\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) if for_system: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_LOCAL_MACHINE\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) if anaconda_prompt: plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(conda_prefix, 'condacmd', 'Anaconda Prompt.lnk'), 'conda_prefix': conda_prefix, }, }) if on_win: desktop_dir, exception = get_folder_path(FOLDERID.Desktop) assert not exception else: desktop_dir = join(expanduser('~'), "Desktop") plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(desktop_dir, "Anaconda Prompt.lnk"), 'conda_prefix': conda_prefix, }, }) return plan
import os import sys import subprocess from os.path import join, pathsep from menuinst.knownfolders import FOLDERID, get_folder_path, PathNotFoundException # call as: python cwp.py PREFIX ARGs... prefix = sys.argv[1] args = sys.argv[2:] new_paths = pathsep.join([ prefix, join(prefix, "Library", "mingw-w64", "bin"), join(prefix, "Library", "usr", "bin"), join(prefix, "Library", "bin"), join(prefix, "Scripts") ]) env = os.environ.copy() env['PATH'] = new_paths + pathsep + env['PATH'] env['CONDA_PREFIX'] = prefix documents_folder, exception = get_folder_path(FOLDERID.Documents) if exception: documents_folder, exception = get_folder_path(FOLDERID.PublicDocuments) if not exception: os.chdir(documents_folder) subprocess.call(args, env=env)
def make_initialize_plan(conda_prefix, shells, for_user, for_system, anaconda_prompt): plan = make_install_plan(conda_prefix) shells = set(shells) if shells & {'bash', 'zsh'}: if 'bash' in shells and for_user: bashrc_path = expand(join('~', '.bash_profile' if on_mac else '.bashrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': bashrc_path, 'conda_prefix': conda_prefix, 'shell': 'bash', }, }) if 'zsh' in shells and for_user: zshrc_path = expand(join('~', '.zshrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': zshrc_path, 'conda_prefix': conda_prefix, 'shell': 'zsh', }, }) if for_system: plan.append({ 'function': init_sh_system.__name__, 'kwargs': { 'target_path': '/etc/profile.d/conda.sh', 'conda_prefix': conda_prefix, }, }) if 'fish' in shells: if for_user: config_fish_path = expand(join('~', '.config', 'config.fish')) plan.append({ 'function': init_fish_user.__name__, 'kwargs': { 'target_path': config_fish_path, 'conda_prefix': conda_prefix, }, }) if for_system: raise NotImplementedError() if 'tcsh' in shells: if for_user: raise NotImplementedError() if for_system: raise NotImplementedError() if 'powershell' in shells: # There's several places PowerShell can store its path, depending # on if it's Windows PowerShell, PowerShell Core on Windows, or # PowerShell Core on macOS/Linux. The easiest way to resolve it is to # just ask different possible installations of PowerShell where their # profiles are. def find_powershell_paths(*exe_names): for exe_name in exe_names: try: yield subprocess_call( (exe_name, '-NoProfile', '-Command', '$PROFILE') ).stdout.strip() except Exception: pass config_powershell_paths = tuple( find_powershell_paths('powershell', 'pwsh', 'pwsh-preview') ) for config_path in config_powershell_paths: if config_path is not None: plan.append({ 'function': init_powershell_user.__name__, 'kwargs': { 'target_path': config_path, 'conda_prefix': conda_prefix } }) if for_system: raise NotImplementedError( "PowerShell hooks are only implemented for per-user profiles." ) if 'cmd.exe' in shells: if for_user: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_CURRENT_USER\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) if for_system: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_LOCAL_MACHINE\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) # it would be nice to enable this on a user-level basis, but unfortunately, it is # a system-level key only. plan.append({ 'function': init_long_path.__name__, 'kwargs': { 'target_path': 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\' 'FileSystem\\LongPathsEnabled' } }) if anaconda_prompt: plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(conda_prefix, 'condabin', 'Anaconda Prompt.lnk'), 'conda_prefix': conda_prefix, }, }) if on_win: desktop_dir, exception = get_folder_path(FOLDERID.Desktop) assert not exception else: desktop_dir = join(expanduser('~'), "Desktop") plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(desktop_dir, "Anaconda Prompt.lnk"), 'conda_prefix': conda_prefix, }, }) return plan
# this script is used on windows to wrap shortcuts so that they are executed within an environment # It only sets the appropriate prefix PATH entries - it does not actually activate environments import os import sys import subprocess from os.path import join from menuinst.knownfolders import FOLDERID, get_folder_path, PathNotFoundException # call as: python cwp.py PREFIX ARGs... prefix = sys.argv[1] args = sys.argv[2:] env = os.environ.copy() env['PATH'] = os.path.pathsep.join([ prefix, join(prefix, "Scripts"), join(prefix, "Library", "bin"), env['PATH'], ]) try: documents_folder = get_folder_path(FOLDERID.Documents) except PathNotFoundException: documents_folder = get_folder_path(FOLDERID.PublicDocuments) os.chdir(documents_folder) subprocess.call(args, env=env)
# this script is used on windows to wrap shortcuts so that they are executed within an environment # It only sets the appropriate prefix PATH entries - it does not actually activate environments import os import sys import subprocess from os.path import join, pathsep from menuinst.knownfolders import FOLDERID, get_folder_path, PathNotFoundException # call as: python cwp.py PREFIX ARGs... prefix = sys.argv[1] args = sys.argv[2:] new_paths = pathsep.join([prefix, join(prefix, "Library", "mingw-w64", "bin"), join(prefix, "Library", "usr", "bin"), join(prefix, "Library", "bin"), join(prefix, "Scripts")]) env = os.environ.copy() env['PATH'] = new_paths + pathsep + env['PATH'] env['CONDA_PREFIX'] = prefix documents_folder, exception = get_folder_path(FOLDERID.Documents) if exception: documents_folder, exception = get_folder_path(FOLDERID.PublicDocuments) if not exception: os.chdir(documents_folder) sys.exit(subprocess.call(args, env=env))
def make_initialize_plan(conda_prefix, shells, for_user, for_system, anaconda_prompt): plan = make_install_plan(conda_prefix) shells = set(shells) if shells & {'bash', 'zsh'}: if 'bash' in shells and for_user: bashrc_path = expand(join('~', '.bash_profile' if on_mac else '.bashrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': bashrc_path, 'conda_prefix': conda_prefix, 'shell': 'bash', }, }) if 'zsh' in shells and for_user: zshrc_path = expand(join('~', '.zshrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': zshrc_path, 'conda_prefix': conda_prefix, 'shell': 'zsh', }, }) if for_system: plan.append({ 'function': init_sh_system.__name__, 'kwargs': { 'target_path': '/etc/profile.d/conda.sh', 'conda_prefix': conda_prefix, }, }) if 'fish' in shells: if for_user: config_fish_path = expand(join('~', '.config', 'config.fish')) plan.append({ 'function': init_fish_user.__name__, 'kwargs': { 'target_path': config_fish_path, 'conda_prefix': conda_prefix, }, }) if for_system: raise NotImplementedError() if 'tcsh' in shells: if for_user: raise NotImplementedError() if for_system: raise NotImplementedError() if 'powershell' in shells: if for_user: raise NotImplementedError() if for_system: raise NotImplementedError() if 'cmd.exe' in shells: if for_user: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_CURRENT_USER\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) if for_system: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_LOCAL_MACHINE\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) if anaconda_prompt: plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(conda_prefix, 'condacmd', 'Anaconda Prompt.lnk'), 'conda_prefix': conda_prefix, }, }) if on_win: desktop_dir, exception = get_folder_path(FOLDERID.Desktop) assert not exception else: desktop_dir = join(expanduser('~'), "Desktop") plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(desktop_dir, "Anaconda Prompt.lnk"), 'conda_prefix': conda_prefix, }, }) return plan
def make_initialize_plan(conda_prefix, shells, for_user, for_system, anaconda_prompt): plan = make_install_plan(conda_prefix) shells = set(shells) if shells & {'bash', 'zsh'}: if 'bash' in shells and for_user: bashrc_path = expand(join('~', '.bash_profile' if on_mac else '.bashrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': bashrc_path, 'conda_prefix': conda_prefix, 'shell': 'bash', }, }) if 'zsh' in shells and for_user: zshrc_path = expand(join('~', '.zshrc')) plan.append({ 'function': init_sh_user.__name__, 'kwargs': { 'target_path': zshrc_path, 'conda_prefix': conda_prefix, 'shell': 'zsh', }, }) if for_system: plan.append({ 'function': init_sh_system.__name__, 'kwargs': { 'target_path': '/etc/profile.d/conda.sh', 'conda_prefix': conda_prefix, }, }) if 'fish' in shells: if for_user: config_fish_path = expand(join('~', '.config', 'config.fish')) plan.append({ 'function': init_fish_user.__name__, 'kwargs': { 'target_path': config_fish_path, 'conda_prefix': conda_prefix, }, }) if for_system: raise NotImplementedError() if 'tcsh' in shells: if for_user: raise NotImplementedError() if for_system: raise NotImplementedError() if 'powershell' in shells: # There's several places PowerShell can store its path, depending # on if it's Windows PowerShell, PowerShell Core on Windows, or # PowerShell Core on macOS/Linux. The easiest way to resolve it is to # just ask different possible installations of PowerShell where their # profiles are. def find_powershell_paths(*exe_names): for exe_name in exe_names: try: yield subprocess_call( (exe_name, '-NoProfile', '-Command', '$PROFILE') ).stdout.strip() except Exception: pass config_powershell_paths = tuple( find_powershell_paths('powershell', 'pwsh', 'pwsh-preview') ) for config_path in config_powershell_paths: if config_path is not None: plan.append({ 'function': init_powershell_user.__name__, 'kwargs': { 'target_path': config_path, 'conda_prefix': conda_prefix } }) if for_system: raise NotImplementedError( "PowerShell hooks are only implemented for per-user profiles." ) if 'cmd.exe' in shells: if for_user: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_CURRENT_USER\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) if for_system: plan.append({ 'function': init_cmd_exe_registry.__name__, 'kwargs': { 'target_path': 'HKEY_LOCAL_MACHINE\\Software\\Microsoft\\' 'Command Processor\\AutoRun', 'conda_prefix': conda_prefix, }, }) # it would be nice to enable this on a user-level basis, but unfortunately, it is # a system-level key only. plan.append({ 'function': init_long_path.__name__, 'kwargs': { 'target_path': 'HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\' 'FileSystem\\LongPathsEnabled' } }) if anaconda_prompt: plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(conda_prefix, 'condabin', 'Anaconda Prompt.lnk'), 'conda_prefix': conda_prefix, }, }) if on_win: desktop_dir, exception = get_folder_path(FOLDERID.Desktop) assert not exception else: desktop_dir = join(expanduser('~'), "Desktop") plan.append({ 'function': install_anaconda_prompt.__name__, 'kwargs': { 'target_path': join(desktop_dir, "Anaconda Prompt.lnk"), 'conda_prefix': conda_prefix, }, }) return plan
# this script is used on windows to wrap shortcuts so that they are executed within an environment # It only sets the appropriate prefix PATH entries - it does not actually activate environments import os import sys import subprocess from os.path import join from menuinst.knownfolders import FOLDERID, get_folder_path, PathNotFoundException # call as: python cwp.py PREFIX ARGs... prefix = sys.argv[1] args = sys.argv[2:] env = os.environ.copy() env['PATH'] = os.path.pathsep.join([ prefix, join(prefix, "Scripts"), join(prefix, "Library", "bin"), env['PATH'], ]) try: documents_folder = get_folder_path(FOLDERID.Documents) except PathNotFoundException: documents_folder = get_folder_path(FOLDERID.PublicDocuments) os.chdir(documents_folder) subprocess.call(args, env=env)