Я использую zsh и установил .zshrc после этого ответа. Я могу использовать pyenv в терминале.
Однако, если я вызову pyenv active из скрипта
#!/bin/zsh
pyenv activate konsole
это терпит неудачу с
Не удалось активировать virtualenv. Возможно, pyenv-virtualenv не был правильно загружен в вашу оболочку. Пожалуйста, перезапустите текущую оболочку и повторите попытку.
Что я должен делать?
Я не знаю Pyenv, но не удивлюсь, если он предоставит множество функций, например, функций или неэкспортированных переменных оболочки. Если вы поместили эти определения в свой .zshrc, вам нужно будет сообщить zsh, что он должен обрабатывать этот файл. Следовательно, в качестве первого эксперимента я бы включил #! строку вашего скрипта в #!/bin/zsh -i
. Если вы не получили сообщение об ошибке, вы знаете причину и можете придумать лучший способ настройки виртуальной среды.
Необходимо получить доступ к переменным, настроенным в .zshrc см. этот ответ, поэтому нам нужно использовать источник <имя-скрипта>
Итак, вызовите скрипт, используя:
source <script-name>
и pyenv работает
Вам необходимо выполнить те же операции, что и для вашей интерактивной оболочки. Но вы также можете просто вызвать
/path/to/venv/konsole/bin/python
и т. д. напрямую.