Ubuntu环境下部署Channels Django应用时Daphne命令缺失求助
我之前在Ubuntu环境下部署Channels应用时也碰到过一模一样的问题,明明pip3显示已经装了Daphne,但终端就是找不到命令,大概率是可执行文件路径没在系统PATH里或者虚拟环境没激活的问题,给你几个排查和解决的步骤:
检查pip3安装的Daphne路径是否在系统PATH中
Ubuntu下用普通用户执行pip3 install daphne时,包会被安装到~/.local/bin/目录下,而这个目录默认可能没被加入系统的环境变量PATH里。你可以先执行:echo $PATH看看输出里有没有
~/.local/bin。如果没有,需要把这个路径添加到PATH中:- 打开用户配置文件,比如
~/.bashrc或者~/.profile - 在文件末尾添加一行:
export PATH="$HOME/.local/bin:$PATH" - 执行
source ~/.bashrc(或者对应的配置文件)让修改生效,之后重启终端再试daphne命令。
- 打开用户配置文件,比如
确认是否激活了虚拟环境
如果你的Django项目用了虚拟环境(比如venv、virtualenv),那Daphne只会被安装在虚拟环境的bin目录下,必须先激活虚拟环境才能调用命令。比如你的虚拟环境目录叫venv,激活命令是:source venv/bin/activate激活后再执行
daphne my_project.asgi:channel_layer应该就能正常运行了。尝试用绝对路径执行Daphne
你可以先找到Daphne的安装路径,执行:pip3 show daphne在输出里找
Location字段,比如如果是~/.local/lib/python3.6/site-packages,那对应的可执行文件就在~/.local/bin/daphne。直接用绝对路径执行试试:~/.local/bin/daphne my_project.asgi:channel_layer如果能正常运行,就说明是PATH的问题,按第一个步骤解决即可。
检查是否是全局安装的权限问题
如果你之前用sudo pip3 install daphne全局安装,那Daphne应该在/usr/local/bin/下,这个目录默认在PATH里。如果还是找不到,可以试试重新安装一次:sudo pip3 uninstall daphne && sudo pip3 install daphne
内容的提问来源于stack exchange,提问作者thatonetallguy

