You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22.04 + Python 3.12环境下虚拟环境(venv)缺失activate脚本的问题排查与解决(基于AAPanel部署Django)

Ubuntu 22.04 + Python 3.12环境下虚拟环境(venv)缺失activate脚本的问题排查与解决(基于AAPanel部署Django)

我之前在AAPanel上部署Django项目时,刚好碰到过一模一样的问题——用Python 3.12创建的虚拟环境里找不到activate脚本,折腾了好一会儿才搞定,下面把排查思路和解决方法分享给你:

一、先搞清楚为什么会缺失activate脚本

常见的原因有这几个:

  • 你的Python 3.12没安装venv模块:Ubuntu默认的Python环境里,venv是单独的包,不是自带的;如果是通过AAPanel编译安装的Python,也可能漏了相关依赖。
  • 创建虚拟环境时用错了Python版本:比如你以为调用的是Python 3.12,但实际用的是系统默认的Python(比如3.10),而那个版本的venv可能有问题或者没装。
  • 权限不足:用root创建虚拟环境后,后续普通用户访问时可能看不到部分文件,或者创建过程中因为权限问题没生成完整的脚本。

二、一步步解决问题

1. 先补全Python 3.12的venv依赖

如果你的Python 3.12是从Ubuntu官方源安装的,直接执行下面的命令安装venv模块:

sudo apt update
sudo apt install python3.12-venv -y

如果是通过AAPanel安装的Python 3.12,打开AAPanel的「Python管理器」,找到Python 3.12,进入「模块管理」,搜索venv并点击安装,确保模块存在。

2. 删除有问题的旧虚拟环境,重新创建

先把那个残缺的虚拟环境删掉,避免干扰:

rm -rf /www/wwwroot/ddlvv/ae9f7a37e98d4a8f98643ced843d71d7_venv

然后指定Python 3.12的完整路径来创建虚拟环境(AAPanel里的Python通常在/usr/local/bin/python3.12,如果不确定可以用which python3.12查路径):

# 用网站运行用户(比如www)创建,避免权限问题
sudo -u www /usr/local/bin/python3.12 -m venv /www/wwwroot/ddlvv/ae9f7a37e98d4a8f98643ced843d71d7_venv

3. 验证虚拟环境是否正常创建

现在检查bin目录的内容:

ls -l /www/wwwroot/ddlvv/ae9f7a37e98d4a8f98643ced843d71d7_venv/bin

如果能看到activateactivate.bashactivate.csh这些脚本,就说明创建成功了。接下来激活试试:

source /www/wwwroot/ddlvv/ae9f7a37e98d4a8f98643ced843d71d7_venv/bin/activate

激活成功后,命令行开头会出现虚拟环境的名称(比如(ae9f7a37e98d4a8f98643ced843d71d7_venv)),这时候就可以安装Django和项目依赖了:

pip install django
# 或者安装requirements.txt里的依赖
pip install -r requirements.txt

三、AAPanel部署Django的额外注意事项

  • 在AAPanel的「网站」设置里,把Python版本指定为虚拟环境里的Python路径:/www/wwwroot/ddlvv/ae9f7a37e98d4a8f98643ced843d71d7_venv/bin/python3.12,不要用系统默认的Python。
  • 如果后续出现权限问题,记得把项目目录的所有者改成www用户:
sudo chown -R www:www /www/wwwroot/ddlvv

内容来源于stack exchange

火山引擎 最新活动