###### tags: `tutorials` `python` `cuda` `GPU` `deep learning` `AI` `ubuntu` `linux` `NVIDIA` # Python 內建 virtualenv 指令 ## 1. 建立新環境 ``` $ virtualenv {venv_name} ``` > {venv_name} 為新環境名稱 ## 2. 設定CUDA版本 編輯 activate 內容 ``` $ vim {venv_name}/bin/activate ``` > vim 是編輯文件指令,輸入 i 可以編輯,編輯完畢按下 esc 結束編輯,:wq 儲存並離開,:q 離開,:q!離開不儲存 增加 `add` 的區塊進原本 `{venv_name}/bin/activate` 檔案 ~~~script # This file must be used with "source bin/activate" *from bash* # you cannot run it directly if [ "${BASH_SOURCE-}" = "$0" ]; then echo "You must source this script: \$ source $0" >&2 exit 33 fi deactivate () { unset -f pydoc >/dev/null 2>&1 # reset old environment variables # ! [ -z ${VAR+_} ] returns true if VAR is declared at all if ! [ -z "${_OLD_VIRTUAL_PATH:+_}" ] ; then PATH="$_OLD_VIRTUAL_PATH" export PATH unset _OLD_VIRTUAL_PATH fi if ! [ -z "${_OLD_VIRTUAL_PYTHONHOME+_}" ] ; then PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME" export PYTHONHOME unset _OLD_VIRTUAL_PYTHONHOME fi # This should detect bash and zsh, which have a hash command that must # be called to get it to forget past commands. Without forgetting # past commands the $PATH changes we made may not be respected if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then hash -r 2>/dev/null fi if ! [ -z "${_OLD_VIRTUAL_PS1+_}" ] ; then PS1="$_OLD_VIRTUAL_PS1" export PS1 unset _OLD_VIRTUAL_PS1 fi unset VIRTUAL_ENV if [ ! "${1-}" = "nondestructive" ] ; then # Self destruct! unset -f deactivate fi ##################################################### ######################## add ######################## ##################################################### if ! [ -z "${_OLD_LD_LIBRARY_PATH+_}" ] ; then LD_LIBRARY_PATH="$_OLD_LD_LIBRARY_PATH" export LD_LIBRARY_PATH unset _OLD_LD_LIBRARY_PATH fi if ! [ -z "${_OLD_CUDA_HOME+_}" ] ; then CUDA_HOME="$_OLD_CUDA_HOME" export CUDA_HOME unset _OLD_CUDA_HOME fi ##################################################### ######################## end ######################## ##################################################### } # unset irrelevant variables deactivate nondestructive VIRTUAL_ENV="{virtual_env_path}" export VIRTUAL_ENV ######################################################## ######################### add ########################## ######################################################## # set CUDA_HOME cuda_path={cuda_path} cuda_version={cuda_version_dir} _OLD_CUDA_HOME="$CUDA_HOME" export CUDA_HOME=$cuda_path/$cuda_version # set library _OLD_LD_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH ######################################################## ######################### end ########################## ######################################################## _OLD_VIRTUAL_PATH="$PATH" PATH="$VIRTUAL_ENV/bin:$PATH" export PATH ######################################################## #################### optional add ###################### ######################################################## # (optional) nvcc -V will show current cuda version export PATH=$CUDA_HOME/bin:$PATH ######################################################## ######################### end ########################## ######################################################## # unset PYTHONHOME if set if ! [ -z "${PYTHONHOME+_}" ] ; then _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME" unset PYTHONHOME fi if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then _OLD_VIRTUAL_PS1="${PS1-}" if [ "x" != x ] ; then PS1="${PS1-}" else PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1-}" fi export PS1 fi # Make sure to unalias pydoc if it's already there alias pydoc 2>/dev/null >/dev/null && unalias pydoc || true pydoc () { python -m pydoc "$@" } # This should detect bash and zsh, which have a hash command that must # be called to get it to forget past commands. Without forgetting # past commands the $PATH changes we made may not be respected if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ] ; then hash -r 2>/dev/null fi ~~~ > {cuda_version} 為要選擇的 cuda 版本 ( 路徑必須存在,ex: cuda-10.0_cudnn7.4, cuda-10.0_cudnn7.6, cuda-9.0_cudnn7.6.1 ) ## 3. 進入虛擬環境 ``` $ source {venv_name}/bin/activate ``` ## 4. 離開虛擬環境 ``` $ deactivate ```