之前在阿里云上布置django时没有创建虚拟环境,今天有空就重新弄下。
登陆服务器后,很奇怪的发现之前配置的默认python版本从python3又变成了python2,不知道为什么,又得重新设置一次。
复制上次使用的命令
# ln -s /usr/local/bin/python3 /usr/bin/python
出现了个错误
ln: target ‘/usr/bin/python’ is not a directory
google了很久,发现是由于复制的时候“-”短横自动变成了“-”长横,改过来就ok了。
创建虚拟环境
我用的python版本是3.6,python3.4版本开始自带pyvenv包可以用来创建虚拟环境,不用安装其他新的东西。
windows下创建虚拟环境
1、创建环境
python -m venv venv1
最后面的venv1是虚拟环境的名称,以上命令会在当前目录下生成一个venv1的文件夹,虚拟环境需要的文件都在这个文件夹下。
创建虚拟环境时还可以添加一些参数。
比如在windows下,我安装了anaconda,而在创建虚拟环境时,
python -m venv --system-site-packages venv1
可以使新环境能够使用已经在anaconda中安装的库,省去很多配置环境的麻烦。
2、进入环境
当前目录下执行
venv1\Scripts\activate.bat
执行后,会在目录前方出现<venv>表明已进入虚拟环境
3、使用环境
通过
pip list
命令可以看到环境中安装的库,只有pip 和setuptools,可以用过pip install 安装需要的库
4、退出环境
deactivate
可以退出虚拟环境
linux下创建虚拟环境
我用的是centos,不过看命令,应该其他linux系统也可以用。
1、创建环境
python -m venv venv1
和windows中相同
2、进入环境
当前目录下执行
source venv1/bin/activate
3、使用环境
和windows中相同
4、退出环境
deactivate
可以退出虚拟环境
和windows中相同
django使用虚拟环境
进入新建的虚拟环境后,进入django目录,开启服务
# python manage.py runserver 0.0.0.0:80
遇到了一个问题,80端口已被占用。
# netstat -anp | grep 80
查看哪个程序在使用80端口
# kill -9 1918
命令关闭正在占用端口的程序
重新开启服务,可以正常启动服务了。