You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

228 lines
4.1 KiB

преди 8 години
преди 9 години
преди 10 години
преди 1 година
преди 9 години
преди 9 години
преди 9 години
преди 9 години
преди 8 години
преди 9 години
преди 9 години
преди 1 година
преди 8 години
преди 10 години
преди 9 години
преди 7 месеца
преди 9 години
преди 9 години
преди 1 година
  1. #!/usr/bin/env bash
  2. #
  3. # Summary: Deactivate virtual environment
  4. #
  5. # Usage: pyenv deactivate
  6. #
  7. # Deactivate a Python virtual environment.
  8. set -e
  9. [ -n "$PYENV_DEBUG" ] && set -x
  10. if [ -z "${PYENV_ROOT}" ]; then
  11. PYENV_ROOT="$(pyenv-root)"
  12. fi
  13. unset FORCE
  14. unset QUIET
  15. # Define `before_deactivate` and `after_deactivate` functions that allow
  16. # plugin hooks to register a string of code for execution before or
  17. # after deactivating a virtualenv.
  18. declare -a before_hooks after_hooks
  19. before_deactivate() {
  20. local hook="$1"
  21. before_hooks["${#before_hooks[@]}"]="$hook"
  22. }
  23. after_deactivate() {
  24. local hook="$1"
  25. after_hooks["${#after_hooks[@]}"]="$hook"
  26. }
  27. # Load plugin hooks.
  28. OLDIFS="$IFS"
  29. IFS=$'\n' scripts=(`pyenv-hooks deactivate`)
  30. IFS="$OLDIFS"
  31. for script in "${scripts[@]}"; do source "$script"; done
  32. while [ $# -gt 0 ]; do
  33. case "$1" in
  34. "-f" | "--force" )
  35. FORCE=1
  36. ;;
  37. "-q" | "--quiet")
  38. QUIET=1
  39. ;;
  40. "-v" | "--verbose" )
  41. unset QUIET
  42. PYENV_VIRTUALENV_VERBOSE_ACTIVATE=1
  43. ;;
  44. * )
  45. break
  46. ;;
  47. esac
  48. shift 1
  49. done
  50. if [ -z "${VIRTUAL_ENV}" ]; then
  51. if [ -z "${FORCE}" ]; then
  52. if [ -z "${QUIET}" ]; then
  53. echo "pyenv-virtualenv: no virtualenv has been activated." 1>&2
  54. fi
  55. echo "false"
  56. exit 1
  57. fi
  58. fi
  59. shell="$(basename "${PYENV_SHELL:-$SHELL}")"
  60. prefix="${VIRTUAL_ENV}"
  61. if [[ "${prefix%/*/envs/*}" == "${PYENV_ROOT}/versions" ]]; then
  62. venv="${prefix#${PYENV_ROOT}/versions/}"
  63. else
  64. venv="${prefix##*/}"
  65. fi
  66. # Execute `before_deactivate` hooks.
  67. for hook in "${before_hooks[@]}"; do eval "$hook"; done
  68. if [ -n "$PYENV_VIRTUALENV_VERBOSE_ACTIVATE" ]; then
  69. echo "pyenv-virtualenv: deactivate ${venv}" 1>&2
  70. fi
  71. # conda package anaconda/miniconda scripts (#173)
  72. if [ -d "${prefix}/conda-meta" ] ||
  73. [ -x "${prefix}/bin/conda" ]; then
  74. shopt -s nullglob
  75. case "${shell}" in
  76. fish )
  77. : # conda doesn't support fish
  78. ;;
  79. * )
  80. for script in "${prefix}/etc/conda/deactivate.d"/*.sh; do
  81. echo ". \"${script}\";"
  82. done
  83. echo "unset CONDA_PREFIX"
  84. ;;
  85. esac
  86. shopt -u nullglob
  87. fi
  88. if [ -n "${PYENV_ACTIVATE_SHELL}" ]; then
  89. # shell version set in pyenv-sh-activate should be unset
  90. # https://github.com/yyuu/pyenv-virtualenv/issues/61
  91. case "$shell" in
  92. fish )
  93. cat <<EOS
  94. set -e PYENV_VERSION;
  95. set -e PYENV_ACTIVATE_SHELL;
  96. EOS
  97. ;;
  98. * )
  99. cat <<EOS
  100. unset PYENV_VERSION;
  101. unset PYENV_ACTIVATE_SHELL;
  102. EOS
  103. ;;
  104. esac
  105. fi
  106. # virtualenv/venv
  107. case "${shell}" in
  108. fish )
  109. cat <<EOS
  110. set -e PYENV_VIRTUAL_ENV;
  111. set -e VIRTUAL_ENV;
  112. EOS
  113. ;;
  114. * )
  115. cat <<EOS
  116. unset PYENV_VIRTUAL_ENV;
  117. unset VIRTUAL_ENV;
  118. EOS
  119. ;;
  120. esac
  121. # anaconda/miniconda
  122. if [ -n "${CONDA_DEFAULT_ENV}" ]; then
  123. case "${shell}" in
  124. fish )
  125. echo "set -e CONDA_DEFAULT_ENV;"
  126. ;;
  127. * )
  128. echo "unset CONDA_DEFAULT_ENV;"
  129. ;;
  130. esac
  131. fi
  132. case "${shell}" in
  133. fish )
  134. cat <<EOS
  135. if [ -n "\$_OLD_VIRTUAL_PATH" ];
  136. set -gx PATH "\$_OLD_VIRTUAL_PATH";
  137. set -e _OLD_VIRTUAL_PATH;
  138. end;
  139. EOS
  140. ;;
  141. * )
  142. cat <<EOS
  143. if [ -n "\${_OLD_VIRTUAL_PATH:-}" ]; then
  144. export PATH="\${_OLD_VIRTUAL_PATH}";
  145. unset _OLD_VIRTUAL_PATH;
  146. fi;
  147. EOS
  148. ;;
  149. esac
  150. case "${shell}" in
  151. fish )
  152. cat <<EOS
  153. if [ -n "\$_OLD_VIRTUAL_PYTHONHOME" ];
  154. set -gx PYTHONHOME "\$_OLD_VIRTUAL_PYTHONHOME";
  155. set -e _OLD_VIRTUAL_PYTHONHOME;
  156. end;
  157. EOS
  158. ;;
  159. * )
  160. cat <<EOS
  161. if [ -n "\${_OLD_VIRTUAL_PYTHONHOME:-}" ]; then
  162. export PYTHONHOME="\${_OLD_VIRTUAL_PYTHONHOME}";
  163. unset _OLD_VIRTUAL_PYTHONHOME;
  164. fi;
  165. EOS
  166. ;;
  167. esac
  168. case "${shell}" in
  169. fish )
  170. cat <<EOS
  171. # check if old prompt function exists
  172. if functions -q _pyenv_old_prompt
  173. # remove old prompt function if exists.
  174. functions -e fish_prompt
  175. functions -c _pyenv_old_prompt fish_prompt
  176. functions -e _pyenv_old_prompt
  177. end
  178. EOS
  179. ;;
  180. * )
  181. cat <<EOS
  182. if [ -n "\${_OLD_VIRTUAL_PS1:-}" ]; then
  183. export PS1="\${_OLD_VIRTUAL_PS1}";
  184. unset _OLD_VIRTUAL_PS1;
  185. fi;
  186. EOS
  187. ;;
  188. esac
  189. case "${shell}" in
  190. fish )
  191. cat <<EOS
  192. if functions -q deactivate;
  193. functions -e deactivate;
  194. end;
  195. EOS
  196. ;;
  197. * )
  198. cat <<EOS
  199. if declare -f deactivate 1>/dev/null 2>&1; then
  200. unset -f deactivate;
  201. fi;
  202. EOS
  203. ;;
  204. esac
  205. # Execute `after_deactivate` hooks.
  206. for hook in "${after_hooks[@]}"; do eval "$hook"; done