Python中如何在shell脚本里执行调用虚拟环境venv?

如题,想写个脚本启动应用,不想每次都手敲命令
但是项目在 venv 虚拟环境里
因为 venv 与系统有交互,这样我怎么在 shell 里调用 venv
Python中如何在shell脚本里执行调用虚拟环境venv?

14 回复

绝对路径?


在shell脚本里调用Python虚拟环境(venv),关键是先激活环境再执行你的代码。这里给你两种最实用的方法。

方法一:直接指定Python解释器路径(推荐) 这是最干净的方法,不用在脚本里处理激活环境。假设你的虚拟环境在/path/to/venv

#!/bin/bash
# 直接使用虚拟环境中的Python解释器
/path/to/venv/bin/python your_script.py

或者执行单条命令:

#!/bin/bash
/path/to/venv/bin/python -c "print('Hello from venv')"

方法二:在脚本中激活环境 如果你需要在激活环境后执行一系列shell命令,可以这样:

#!/bin/bash
# 激活虚拟环境
source /path/to/venv/bin/activate

# 现在可以运行Python脚本或命令
python your_script.py

# 也可以运行其他依赖此环境的命令
pip list

# 完成后可以停用(可选)
deactivate

关键点:

  • 确保脚本有执行权限:chmod +x your_script.sh
  • 使用绝对路径更可靠,避免相对路径的问题
  • 方法一更简洁,避免了环境变量在子shell中的传递问题

简单说,直接用虚拟环境里的python解释器最省事。

我用的绝对路径

venv 绝对路径里面执行 activate 就行了 ba

直接写绝对地址,不用 activate

source //bin/active && sh your_script.sh

推荐使用 pipenv,切换到项目目录,直接 pipenv run cmd。

如果要进入虚拟环境使用 pipenv shell

还可以方便的加载环境变量哦,配合 Flask 很好用

使用 venv 的 python 绝对路径来运行就可以了

source “pipenv --venv/bin/activate”

绝对路径就可以了
<br> $venv/bin/python <a target="_blank" href="http://Your_python_program.py" rel="nofollow noopener">Your_python_program.py</a> <br>

那我要想在虚拟环境里安装一些依赖怎么办?比如 python setup.py install,pip install -r requirements.txt 等?

pipenv + pyenv + direnv
妈妈再也不担心我的脚本运行环境了

最简单的就是绝对路径啊

/home/venv/bin/pythonx.x script.py

绝对路径没有错

回到顶部