作者chang0206 (Eric Chang)
看板Python
標題[問題] 請問如何在bash script啟動pyenv虛擬環境
時間Mon Dec 6 14:11:38 2021
最近在測試一個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://webptt.com/m.aspx?n=bbs/Python/M.1638771100.A.C85.html
1F:推 lycantrope: 先eval "$(pyenv init -)"啟動pyenv? 12/06 14:23
2F:→ chang0206: 感恩一樓!似乎可行 我研究一下怎麼寫 謝謝! 12/06 14:30
4F:→ chang0206: 用bash執行可以,但是用supervisor去呼叫這個script 12/06 14:55
5F:→ chang0206: 還是會出錯,繼續研究中... 12/06 14:55
6F:→ f496328mm: 用 pipenv 12/06 16:51
7F:→ f496328mm: pipenv run python 12/06 16:51
8F:→ f496328mm: 以上可以同時啟動 虛擬環境 + python + 讀取.env 12/06 16:52
9F:→ f496328mm: 我以前也用 supervisor,之後改成 docker 12/06 16:52
10F:推 TitanEric: shebang #/bin/bash改指向虛擬環境中的python路徑也可 12/06 20:06
11F:→ TitanEric: 以 12/06 20:06
12F:→ gomi: 我是直接用指定環境的 python 去執行 script 12/07 13:51
13F:→ chang0206: 改shebang 有用喔?等等來測試看看,謝謝。另外,我們 12/07 13:54
14F:→ chang0206: 就是從pipenv 跳過來pyenv 的.. 12/07 13:54
15F:推 roccqqck: 絕對路徑指定pip跟python就好 12/08 08:29
16F:推 lycantrope: 嗯,不用啟動虛擬環境,直接抓python絕對路徑去跑 12/08 08:44
17F:→ roccqqck: python3.9 -m venv ~/.local/venvs/myenv 12/08 16:35
18F:→ roccqqck: ~/.local/venvs/myenv/bin/python3 --version 12/08 16:36
19F:→ roccqqck: ~/.local/venvs/myenv/bin/pip list 12/08 16:36
20F:→ f416720001: 為未來人補個conda環境解法,bash檔照常寫,啟動時採 01/10 19:34
21F:→ f416720001: 用bash -i script.sh 01/10 19:34