作者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/cn.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