推送代码至远程后uWSGI路径变更问题求助
解决远程服务器uWSGI不在项目虚拟环境的问题
你遇到的核心问题很明确:本地项目虚拟环境(venv)里的uWSGI并没有同步到远程服务器——这是行业通用的最佳实践导致的:我们通常会把venv目录加入.gitignore,避免提交体积庞大的环境依赖文件,所以远程仓库里并没有你本地的venv,当前远程用的是系统级别的uWSGI。下面是具体的解决步骤:
步骤1:在远程服务器创建并激活项目虚拟环境
先通过SSH登录到你的远程服务器,进入项目仓库目录(/home/ldl/repo/Qiyun02),执行以下命令:
# 创建和本地同版本的Python虚拟环境(本地为Python3.5) python3.5 -m venv venv # 激活虚拟环境 source venv/bin/activate
激活成功后,命令行开头会出现(venv)标识,说明已经进入虚拟环境的上下文。
步骤2:同步项目依赖到远程虚拟环境
- 回到本地项目,先激活venv,然后生成项目依赖清单:
pip freeze > requirements.txt
这个命令会把本地venv里的所有依赖(包括uWSGI)写入requirements.txt文件。
- 将
requirements.txt提交到Git并推送到远程:
git add requirements.txt git commit -m "Add project dependencies list" git push remote_repo master
- 回到远程服务器的项目目录(已激活venv),安装所有依赖:
pip install -r requirements.txt
执行完成后,uWSGI就会被安装到远程项目的venv/lib/python3.5/site-packages路径下了。
步骤3:确保使用虚拟环境里的uWSGI启动服务
之后启动uWSGI时,有两种方式确保调用的是venv内的版本:
- 方式一:激活venv后直接执行
uwsgi命令(此时系统会优先使用虚拟环境内的二进制文件) - 方式二:使用虚拟环境内uWSGI的绝对路径,比如:
/home/ldl/repo/Qiyun02/venv/bin/uwsgi --your-uwsgi-config.ini
验证结果
在远程激活venv后执行pip show uwsgi,你会看到Location已经指向项目的venv路径,此时用这个uWSGI配置连接Django就没问题了。
内容的提问来源于stack exchange,提问作者sof-03
相关产品推荐
相关产品推荐

