Skip to content

Plugin hooks not working #2337

@danfrankj

Description

@danfrankj

In particular I'd like to have a hook that runs (before or after) pyenv activate command. This is a plugin command but I believe the hooks system lives here.

Steps to repro:

  • install pyenv-virtualenv plugin
  • create hook script in the pyenv.d/activate folder
  • run activate

Demo
image

Happy to provide additional info if helpful.

Too many issues will kill our team's development velocity, drastically.
Make sure you have checked all steps below.

Prerequisite

  • Make sure your problem is not listed in the common build problems.
  • Make sure no duplicated issue has already been reported in the pyenv issues. You should look for closed issues, too.
  • Make sure you are not asking us to help solving your specific issue.
    • GitHub issues is opened mainly for development purposes. If you want to ask someone to help solving your problem, go to some community site like Gitter, StackOverflow, etc.
  • Make sure your problem is not derived from packaging (e.g. Homebrew).
    • Please refer to the package documentation for the installation issues, etc.
  • Make sure your problem is not derived from plugins.
    • This repository is maintaining pyenv and the default python-build plugin only. Please refrain from reporting issues of other plugins here.

Description

  • Platform information (e.g. Ubuntu Linux 16.04): OSX 12.3.1
  • [] OS architecture (e.g. amd64):
  • pyenv version: 2.2.4
  • Python version: pyenv otherwise functions
  • C Compiler information (e.g. gcc 7.3): NA
  • Please attach the debug trace of the failing command as a gist: command is not faulty
    • Run env PYENV_DEBUG=1 <faulty command> 2>&1 | tee trace.log and attach trace.log. E.g. if you have a problem with installing Python, run env PYENV_DEBUG=1 pyenv install -v <version> 2>&1 | tee trace.log (note the -v option to pyenv install).
+(/usr/local/bin/pyenv:23): enable -f /usr/local/bin/../libexec/pyenv-realpath.dylib realpath
+(/usr/local/bin/pyenv:30): '[' -z '' ']'
++(/usr/local/bin/pyenv:32): type -P greadlink readlink
++(/usr/local/bin/pyenv:32): head -1
+(/usr/local/bin/pyenv:32): READLINK=/usr/local/bin/greadlink
+(/usr/local/bin/pyenv:33): '[' -n /usr/local/bin/greadlink ']'
+(/usr/local/bin/pyenv:58): '[' -z /Users/danfrank/.pyenv ']'
+(/usr/local/bin/pyenv:61): PYENV_ROOT=/Users/danfrank/.pyenv
+(/usr/local/bin/pyenv:63): export PYENV_ROOT
+(/usr/local/bin/pyenv:65): '[' -z '' ']'
+(/usr/local/bin/pyenv:66): PYENV_DIR=/Users/danfrank
+(/usr/local/bin/pyenv:69): '[' '!' -d /Users/danfrank ']'
+(/usr/local/bin/pyenv:69): '[' '!' -e /Users/danfrank ']'
++(/usr/local/bin/pyenv:73): cd /Users/danfrank
++(/usr/local/bin/pyenv:73): echo /Users/danfrank
+(/usr/local/bin/pyenv:73): PYENV_DIR=/Users/danfrank
+(/usr/local/bin/pyenv:74): export PYENV_DIR
+(/usr/local/bin/pyenv:77): shopt -s nullglob
++(/usr/local/bin/pyenv:79): abs_dirname /usr/local/bin/pyenv
++(/usr/local/bin/pyenv:40): abs_dirname(): local path=/usr/local/bin/pyenv
++(/usr/local/bin/pyenv:44): abs_dirname(): '[' -n /usr/local/bin/pyenv ']'
++(/usr/local/bin/pyenv:45): abs_dirname(): cd_path=/usr/local/bin
++(/usr/local/bin/pyenv:46): abs_dirname(): [[ /usr/local/bin != \/\u\s\r\/\l\o\c\a\l\/\b\i\n\/\p\y\e\n\v ]]
++(/usr/local/bin/pyenv:47): abs_dirname(): cd /usr/local/bin
++(/usr/local/bin/pyenv:49): abs_dirname(): name=pyenv
+++(/usr/local/bin/pyenv:50): abs_dirname(): resolve_link pyenv
+++(/usr/local/bin/pyenv:36): resolve_link(): /usr/local/bin/greadlink pyenv
++(/usr/local/bin/pyenv:50): abs_dirname(): path=../Cellar/pyenv/2.2.4-1/bin/pyenv
++(/usr/local/bin/pyenv:44): abs_dirname(): '[' -n ../Cellar/pyenv/2.2.4-1/bin/pyenv ']'
++(/usr/local/bin/pyenv:45): abs_dirname(): cd_path=../Cellar/pyenv/2.2.4-1/bin
++(/usr/local/bin/pyenv:46): abs_dirname(): [[ ../Cellar/pyenv/2.2.4-1/bin != \.\.\/\C\e\l\l\a\r\/\p\y\e\n\v\/\2\.\2\.\4\-\1\/\b\i\n\/\p\y\e\n\v ]]
++(/usr/local/bin/pyenv:47): abs_dirname(): cd ../Cellar/pyenv/2.2.4-1/bin
++(/usr/local/bin/pyenv:49): abs_dirname(): name=pyenv
+++(/usr/local/bin/pyenv:50): abs_dirname(): resolve_link pyenv
+++(/usr/local/bin/pyenv:36): resolve_link(): /usr/local/bin/greadlink pyenv
++(/usr/local/bin/pyenv:50): abs_dirname(): path=../libexec/pyenv
++(/usr/local/bin/pyenv:44): abs_dirname(): '[' -n ../libexec/pyenv ']'
++(/usr/local/bin/pyenv:45): abs_dirname(): cd_path=../libexec
++(/usr/local/bin/pyenv:46): abs_dirname(): [[ ../libexec != \.\.\/\l\i\b\e\x\e\c\/\p\y\e\n\v ]]
++(/usr/local/bin/pyenv:47): abs_dirname(): cd ../libexec
++(/usr/local/bin/pyenv:49): abs_dirname(): name=pyenv
+++(/usr/local/bin/pyenv:50): abs_dirname(): resolve_link pyenv
+++(/usr/local/bin/pyenv:36): resolve_link(): /usr/local/bin/greadlink pyenv
+++(/usr/local/bin/pyenv:50): abs_dirname(): true
++(/usr/local/bin/pyenv:50): abs_dirname(): path=
++(/usr/local/bin/pyenv:44): abs_dirname(): '[' -n '' ']'
++(/usr/local/bin/pyenv:53): abs_dirname(): echo /usr/local/Cellar/pyenv/2.2.4-1/libexec
+(/usr/local/bin/pyenv:79): bin_path=/usr/local/Cellar/pyenv/2.2.4-1/libexec
+(/usr/local/bin/pyenv:80): for plugin_bin in '"${bin_path%/*}"/plugins/*/bin'
+(/usr/local/bin/pyenv:81): PATH=/usr/local/Cellar/pyenv/2.2.4-1/plugins/python-build/bin:/usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/danfrank/go/bin:/Users/danfrank/.pyenv/shims:/Users/danfrank/.pyenv/bin:/Users/danfrank/.rbenv/shims:/Users/danfrank/.rbenv/bin:/Users/danfrank/.pyenv/shims:/Users/danfrank/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/opt/fzf/bin
+(/usr/local/bin/pyenv:85): '[' /usr/local/Cellar/pyenv/2.2.4-1 '!=' /Users/danfrank/.pyenv ']'
+(/usr/local/bin/pyenv:90): export PATH=/usr/local/Cellar/pyenv/2.2.4-1/libexec:/usr/local/Cellar/pyenv/2.2.4-1/plugins/python-build/bin:/usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/danfrank/go/bin:/Users/danfrank/.pyenv/shims:/Users/danfrank/.pyenv/bin:/Users/danfrank/.rbenv/shims:/Users/danfrank/.rbenv/bin:/Users/danfrank/.pyenv/shims:/Users/danfrank/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/opt/fzf/bin
+(/usr/local/bin/pyenv:90): PATH=/usr/local/Cellar/pyenv/2.2.4-1/libexec:/usr/local/Cellar/pyenv/2.2.4-1/plugins/python-build/bin:/usr/local/Cellar/pyenv-virtualenv/1.1.5/shims:/Users/danfrank/go/bin:/Users/danfrank/.pyenv/shims:/Users/danfrank/.pyenv/bin:/Users/danfrank/.rbenv/shims:/Users/danfrank/.rbenv/bin:/Users/danfrank/.pyenv/shims:/Users/danfrank/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/opt/fzf/bin
+(/usr/local/bin/pyenv:92): PYENV_HOOK_PATH=:/Users/danfrank/.pyenv/pyenv.d
+(/usr/local/bin/pyenv:93): '[' /usr/local/Cellar/pyenv/2.2.4-1 '!=' /Users/danfrank/.pyenv ']'
+(/usr/local/bin/pyenv:95): PYENV_HOOK_PATH=:/Users/danfrank/.pyenv/pyenv.d:/usr/local/Cellar/pyenv/2.2.4-1/pyenv.d
+(/usr/local/bin/pyenv:97): PYENV_HOOK_PATH=:/Users/danfrank/.pyenv/pyenv.d:/usr/local/Cellar/pyenv/2.2.4-1/pyenv.d:/usr/local/etc/pyenv.d:/etc/pyenv.d:/usr/lib/pyenv/hooks
+(/usr/local/bin/pyenv:101): PYENV_HOOK_PATH=/Users/danfrank/.pyenv/pyenv.d:/usr/local/Cellar/pyenv/2.2.4-1/pyenv.d:/usr/local/etc/pyenv.d:/etc/pyenv.d:/usr/lib/pyenv/hooks
+(/usr/local/bin/pyenv:102): export PYENV_HOOK_PATH
+(/usr/local/bin/pyenv:104): shopt -u nullglob
+(/usr/local/bin/pyenv:107): command=activate
+(/usr/local/bin/pyenv:108): case "$command" in
++(/usr/local/bin/pyenv:121): command -v pyenv-activate
+(/usr/local/bin/pyenv:121): command_path=/usr/local/bin/pyenv-activate
+(/usr/local/bin/pyenv:122): '[' -z /usr/local/bin/pyenv-activate ']'
+(/usr/local/bin/pyenv:130): shift 1
+(/usr/local/bin/pyenv:131): '[' testing1234 = --help ']'
+(/usr/local/bin/pyenv:138): exec /usr/local/bin/pyenv-activate testing1234
+(/usr/local/bin/pyenv-activate:18): '[' testing1234 = --complete ']'
+(/usr/local/bin/pyenv-activate:23): printf '\x1B[31;1m'
+(/usr/local/bin/pyenv-activate:24): echo

+(/usr/local/bin/pyenv-activate:25): echo 'Failed to activate virtualenv.'
Failed to activate virtualenv.
+(/usr/local/bin/pyenv-activate:26): echo

+(/usr/local/bin/pyenv-activate:27): echo 'Perhaps pyenv-virtualenv has not been loaded into your shell properly.'
Perhaps pyenv-virtualenv has not been loaded into your shell properly.
+(/usr/local/bin/pyenv-activate:28): echo 'Please restart current shell and try again.'
Please restart current shell and try again.
+(/usr/local/bin/pyenv-activate:29): echo

+(/usr/local/bin/pyenv-activate:30): printf '\x1B[0m'
+(/usr/local/bin/pyenv-activate:32): exit 1

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions