看板 Python 關於我們 聯絡資訊
最近在測試一個django app 在一般狀況下,我可以用user 帳號登入 ssh 切換到工作目錄 然後用 pyenv activate venv_name 啟動虛擬環境 安裝好套件之後,啟動gunicorn 把django site 叫起來. 可是把這些指令寫成bash script 之後,就無法正常啟動了 script 大概長這樣 #!/bin/bash pyenv activate .ve pyenv exec gunicorn config.wsgi:application --name mini2 --workers 8 \ --workers 8 --bind=unix:/tmp/run/mini2.socket \ --log-level=debug --log-file=- 錯誤訊息如下 Failed to activate virtualenv. Perhaps pyenv-virtualenv has not been loaded into your shell properly. Please restart current shell and try again. 可是如前面說的,我如果登入ssh console 一行一行執行script 內的指令 是可以正常跑起來的 想請問各位先進,要怎麼在bash script 裡面啟動pyenv 做的虛擬環境? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.238.51.144 (日本) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1638771100.A.C85.html
lycantrope: 先eval "$(pyenv init -)"啟動pyenv? 12/06 14:23
chang0206: 感恩一樓!似乎可行 我研究一下怎麼寫 謝謝! 12/06 14:30
chang0206: 用bash執行可以,但是用supervisor去呼叫這個script 12/06 14:55
chang0206: 還是會出錯,繼續研究中... 12/06 14:55
f496328mm: 用 pipenv 12/06 16:51
f496328mm: pipenv run python 12/06 16:51
f496328mm: 以上可以同時啟動 虛擬環境 + python + 讀取.env 12/06 16:52
f496328mm: 我以前也用 supervisor,之後改成 docker 12/06 16:52
TitanEric: shebang #/bin/bash改指向虛擬環境中的python路徑也可 12/06 20:06
TitanEric: 以 12/06 20:06
gomi: 我是直接用指定環境的 python 去執行 script 12/07 13:51
chang0206: 改shebang 有用喔?等等來測試看看,謝謝。另外,我們 12/07 13:54
chang0206: 就是從pipenv 跳過來pyenv 的.. 12/07 13:54
roccqqck: 絕對路徑指定pip跟python就好 12/08 08:29
lycantrope: 嗯,不用啟動虛擬環境,直接抓python絕對路徑去跑 12/08 08:44
roccqqck: python3.9 -m venv ~/.local/venvs/myenv 12/08 16:35
roccqqck: ~/.local/venvs/myenv/bin/python3 --version 12/08 16:36
roccqqck: ~/.local/venvs/myenv/bin/pip list 12/08 16:36
f416720001: 為未來人補個conda環境解法,bash檔照常寫,啟動時採 01/10 19:34
f416720001: 用bash -i script.sh 01/10 19:34