重装系统之后的Django项目配置(WSL)

发布时间 2023-04-04 19:41:11作者: hhhhuaz

宇航员

重装系统之后的Django项目配置(WSL

升级固态硬盘之后,只能重装系统,这样一来就得重新来配置项目的开发环境。

Linux环境下

Django项目需要用到python解释器,在开发过程中,不同的项目可能会用到不同版本的库,为了防止环境下包的版本冲突,选择在windows的linux子环境中来安装多版本的python,通过virtualenv来生成相互隔离的虚拟环境。

开启WSL功能

在安装之前,由于windows默认是关闭WSL功能的,所以需要先开启该功能。

这边有两种方法,都可以开启,不过重点是开启之后需要重启电脑才可以生效

  • 第一种是直观一点的方法

开启WSL功能

打开设置里的应用和功能

image-20230403112835703

点击右侧的相关设置提示的程序和功能

接着点左侧的启用或关闭windows功能

image-20230403113044997

在列表里找到并勾选适用于Linuxwindows子系统选项,确定之后重启电脑。

  • 第二种是微软官方给出的命令方法

WSL安装

管理员身份在powershell中运行这条命令即可打开。

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
安装WSL

开启上面功能之后就可以安装子环境了,直接在微软商店里搜索ubuntu就可以看到,这里选择18.05版本进行安装。

image-20230404165926953

安装成功之后打开ubuntu的窗口,第一次打开需要等待一下,等待响应之后,需要设置Linux子系统的用户名和密码,设置完成之后即可完成安装,安装成功之后可以在桌面打开:按住Shift+单击鼠标右键,可以看到在此处打开Linux shell窗口,点击即可在桌面打开子环境的窗口。

image-20230404170443478

安装mysql-server

安装mysql

首先是更新一下软件源:

sudo apt-get update
sudo apt-get upgrade

通过apt命令安装mysql

sudo apt-get install mysql-server mysql-client

这边安装完之后可能会碰到一个进入数据库的错误(参考文章

image-20230404171835659

博主用下面的命令给mysql加了权限

sudo mkdir -p /var/run/mysqld 
 
sudo chown mysql /var/run/mysqld/ 
 
sudo service mysql restart

因为不清楚root账户的默认密码,这里找到了mysql生成的默认账号,用以下命令可以查看

sudo cat /etc/mysql/debian.cnf

image-20230404172938034

这边的mysql_update中的userpassword就是生成的默认账号,用该账号进入之后修改root的密码

use mysql;
 
update mysql.user set authentication_string=password('修改成你root账户的密码') where user='root' and Host ='localhost';
 
update user set plugin="mysql_native_password";
 
flush privileges;
 
quit;

退出重启之后用root用户登录进入

sudo service mysql restart
 
mysql -u root -p

可以登陆之后,通过-h + ip来通过子环境去连接windows下的数据库

mysql -u root -h [x.x.x.x] -p

如果可以连接成功即已经完成Linux环境下数据库的配置。

安装virtualenv

文章

子环境中默认安装了python2.7和python3.6但是应该是没有安装pip包管理工具,所以需要通过下面的命令来安装

sudo apt-get install python3-pip

安装完pip之后,通过pip安装virtualenv

pip3 install virtualenv
virtualenv --version

安装成功后查询可以看到版本号,之后用virtualenv来创建一个虚拟环境

注:如果环境下有多个版本的python这时调用virtualenv就需要在命令前加上一个前缀:python3 -m virtualenv --version(比如3.6版本下装的virtualenv

//在当前目录下创建虚拟环境
python3 -m virtualenv [progect_env]

ps:如果有多个python解释器可以指定虚拟环境中的python版本,命令如下:

python3 -m virtualenv -p [python解释器的路径:/usr/bin/python2.7] [project_env]

source [project_env]/bin/activate 进入虚拟环境

deactivate 退出虚拟环境

安装项目依赖(以labcoursedisplay为例)

进入虚拟环境

source labcoursedisplay/bin/activate

进入项目目录

cd /mnt/c/Project/Labcoursedisplay/

安装依赖

pip3 install -r requirements

在安装mysql-client1.4.0时出现一个OSError: mysql_config not found报错(参考文章

img

这里看到是mysql_config的问题,输入之后报错not found也给出了解决办法,输入

sudo apt install libmysqlclient-dev

安装完成之后就可以找到mysql_config了,再去安装mysql-client就可以成功了。

至此就已经完成了Linux环境下的所有配置。

windows环境下

项目开发是在windows下的集成开发环境下进行的。Linux环境只是提供python虚拟环境用来跑Django项目。

安装node.js

因为项目是前后端分离的,前端用到了React,这里安装node.js之后就可以通过npm命令来对前端进行开发。

安装Navicat
安装mysql

这里用的版本是5.6版本,因为是用的绿色版,所以直接把压缩包解压之后即可用数据库,在重装系统之前通过Navicat把项目数据库结构和数据都备份了,同时也备份了mysql(这里是数据库中的一个叫mysql的数据库)数据库的表,也就是用户信息,因为默认是关闭远程连接的,需要去修改mysql数据库用户表中的数据才打开远程连接,具体可以参考这里,而通过备份的sql文件在Navicat中直接运行覆盖导入,既可以省去修改的过程,不过这里有个重点:在覆盖导入之后也需要运行刷新权限的语句才可以使得修改生效

FLUSH PRIVILEGES # 这一条命令是刷新mysql的权限相关表

之后就可以通过ip进行连接数据库了。

克隆项目代码
git clone [仓库地址]
安装PyCharm
配置PyCharm

安装完PyCharm之后,就可以配置开发环境了,用PyCharm打开项目,点击File->Settings->Project:LabCourseDisplay->Python Interpreter进入解释器配置

image-20230404181146651

点击Add添加新的解释器,选择WSL,在路径里选到虚拟环境的bin目录下,添加python解释器的版本,点击确定,即可添加成功

image-20230404181419528

添加完虚拟环境解释器之后,配置项目的解释器,选择Edit Configurations...

image-20230404181524433

之后在python interpreter处选择刚才配置的WSL虚拟环境的解释器

打开项目的settings.py文件,由于Django需要配置连接数据库的ip这里的HOST即为Linux虚拟子环境的IP地址,打开Linux shell通过命令即可查看

ifconfig

image-20230404181840650

至此,项目环境配置完成,通过PyCharm就可以开始进行开发了。

参考文档