搭建跨平台的统一python开发环境:

使用开发环境的好处:

  可不用在服务器上直接修改源代码---写的代码首先得入版本库(放git或giitlab中),在本地写代码提交到git中.然后在服务器上git pull把代码拉上来运行。

  项目大层级目录多用vim写不利于管理项目--用ide管理可组织代码结构,甚至能自动import,还可做到集成的功能:如可直接在ide中运行我的服务,甚至解释器使用远程在本地进行调试(如果在本地写python脚本的话要在本地安装一python脚本,那还得各种依赖--这就麻烦)。

  

  不管何种开发语言,目前用的比较多的开发环境基本就是Vagrant+VirtualBox搭建的虚拟开发环境,这种开发环境的好处就是一次搭建处处可用,各个平台和系统都可以使用。开发团队中,可以自己制作一个box,让团队的成员方便安装,保证每个人的开发环境都是一致的。

Vagrant可以创建一些共享目录,让物理机和虚拟机使用共享的目录,虚拟机只提供开发环境。这样的话,开发环境随处可用。代码目录只要在物理机上共享就可以使用这套开发环境。

一.Windows7 PowerShell 2.0升级到 PowerShell 5.1:

 这里使用的是win7系统,可能会出现powershell过低的情况,所以需要先检查本机的powershell版本:

  Windows + R 输入powershell回车,打开命令行窗口,输入$PSVersionTable ,查看powershell版本号

Windows7 PowerShell 2.0升级到 PowerShell 5.1:

1.安装必要的.net插件
确保你已经安装了.net 4.5以上。如果没装,直接装.net 4.6即可Microsoft .NET Framework 4.61
  https://www.microsoft.com/zh-cn/download/details.aspx?id=49982
1.2 Microsoft .NET Framework 4.61 简体中文语言包
  https://www.microsoft.com/zh-cn/download/details.aspx?id=49977
1.3 装ps5.1安装包下载地址:
  https://www.microsoft.com/en-us/download/details.aspx?id=54616
安装上图所示的插件后,再次查看powershell版本截图如下:

二.安装virtualbox和vagrant:

请务必完全参照以下步骤顺序一步步来: 

 1.下载并安装https://www.virtualbox.org/    建议用迅雷下载比较快

 2.下载并安装https://www.vagrantup.com/   virtualbox和vagrant版本要对应,建议都安装最新版的

3.重启--->cmd--->进入代码的项目目录f:--->mkdir devops--->新建一存放vagrant的项目目录mkdir data---->cd data-->vagrant box list列出本地模版(此时vagrant还需要一个模版vagrant box:虚拟镜像文件---下载地址http://cloud.centos.org/centos/7/vagrant/)这里我用的是自己网盘中的镜像,因为此镜像已有所有基础环境,不是纯净版-- >

  • 添加镜像到Vagrant:

 .最后如下可以看到镜像文件列表了

 .初始化vagrant项目:如下命令后就会在当前目录下生成一Vagrantfile配置文件

  

 .先不着急打开虚拟系统,我们配置vagrantfile,执行上面那条语句后生成的,对应生成的还有一个.vagrant文件,接下来是vagrantfile配置信息如下:

  修改端口转发为8000(访问本机host的哪个端口时它会帮我转发到虚虚拟机guest的哪个端口) 

    config.vm.box = "centos7.1"  #box名称
config.vm.hostname = "CentOS7" #win10系统下的主机名
  config.vm.network "forwarded_port", guest: 8000, host: 8000 --->修改26行

config.vm.synced_folder "../data", "/vagrant_data", disabled: true   --->修46行禁用默认同步目录
     config.vm.synced_folder "F:/devops/data", "/share",type: "virtualbox"  --->设置同步目录

由于vagrant没有Guest

Additions,通过vagrant不能创建共享文件夹,所以需要下载vbguest插件,当启动时自动安装Guest Additions
在命令行:
$ vagrant plugin install vagrant-vbguest   --->需要花几分钟耐心等待
完成后启动系统,在命令行:
$ vagrant up   --->这个要花点时间耐心等待

$vagrant halt --->同时在virtualbox图形软件中点击关闭虚拟机

$vagrant reload   --->重新加载虚拟机-->如下图说明已经挂载成功!!

由于我们上面安装好了Guest Additions,需要修改vagrantfile配置文件,以免下次启动时重复安装Guest Additions,在配置文件最后一个end前添加两行命令:
config.vbguest.auto_update = false
config.vbguest.no_remote = true

$vagrant halt--->同时在virtualbox软件中点击关闭虚拟机

配置好后我们基本上已经配置好了虚拟系统,下一步在命令行启动系统

.启动虚拟机器:$ vagrant up有如下提示信息:网络/名称/端口转发/端口映射/ssh认证方式/目录映射

  

    密钥生成是在F:\devops\data\.vagrant此隐藏目录中

 .此时直接vagrant ssh就进入虚拟机了#sudo su - 切换root ---->vi /etc/ssh/sshd_config--->passwordAuthentication  no-->改为yes如下两图:

.并systemctl restart sshd 

.此时机器就起来了,然后exit退出。打开virtualbox如下图可看到有机器运行了

      . 此时可直接关掉virtuabox因为占系统资源,并可直接用crt去连了:

用户名密码都是vagrant

此时如下图中自动挂载了一个本地的一个目录(在本地此目录中操作什么虚拟中就会有什么):

此时我在本机F:\devops\data目录下建一名为111.txt文件,在虚拟机中也能同步看到了

如下图:若上述图中没显示挂载目录则从下图中可以看出 centos/7 镜像缺少 Virtualbox Guest Additions---照上述几个步骤操作即可。

到此虚拟开发环境就搭建成功了!!

 三.安装python

 1. python和django的版本选择:

  https://www.python.org/downloads/source/

  https://www.djangoproject.com/download/    打开它可看到中下图:所知要选长期也稳定版,否则后期官方不维护你项目就麻烦

  https://docs.djangoproject.com/en/2.2/   ---阅读django2.2官文中有python版本依赖说明--选稳定版本python3.6

https://www.django-rest-framework.org/    ---阅读drf官文,看它对版本的要求

所以看完上述三个官文后版本就定了:python3.6 + django2.2

python官网中:

[root@centos7 ~]$ wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz    下载

 2.安装依赖--python会用到的工具:如自动提示/ssl相关软件包

  [vagrant@centos7 ~]$ sudo su - root

  [root@centos7 ~]# yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

 3.编译安装python

[root@centos7 ~]$ tar -xzf Python-3.6.6.tgz

[root@centos7 ~]$ cd Python-3.6.6

[root@centos7 Python-3.6]$ ./configure -prefix=/usr/local/python36    ---->指定安装目录

[root@centos7 Python-3.6]$ make && make install      --->编译如下图结束后它帮我把pip和setuptools都安装了

4.配置pip源

tee /etc/pip.conf <<EOF
[global]
index-url = http://pypi.douban.com/simple
trusted-host = pypi.douban.com
[list]
format=columns
EOF

四.创建虚拟环境

1.用pip安装python的虚拟环境virtualenv--开发中用虚拟环境来开发为了隔离默认python环境

切换到vagrant用户:

[vagrant@CentOS7 ~]$ sudo /usr/local/python36/bin/pip3 install virtualenv

2.用virtualenv去初始化一python的虚拟环境:

[vagrant@CentOS7 ~]$ /usr/local/python36/bin/virtualenv ./python36env  生成一当前用户家目录下的此目录

3.进入虚拟环境:一定要在vagrant普通用户下进入

[vagrant@CentOS7 ~]$ source ./python36env/bin/activate
(python36env) [vagrant@CentOS7 ~]$

五.开发django项目:

1.安装django---用django2.2

(python36env) [vagrant@CentOS7 ~]$ pip install django==2.2.1

2.安装并配置数据库:安装vim:

sudo yum -y install vim

安装mariadb:
(python36env) [vagrant@CentOS7 ~]$ sudo yum -y install mariadb mariadb-server mariadb-devel
修改/etc/my.cnf配置:
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8 启动服务:
sudo systemctl start mariadb
sudo systemctl enable mariadb
安装mysqlclient:----python的mysql扩展
pip install mysqlclient
初始化数据库: mysql_secure_installation
空(回车)--y--123456(root密码)--y,y,y,y,y
创建数据库:
mysql -uroot -p123456
create database devops CHARACTER SET utf8;

3.初始化django项目:


(python36env) [vagrant@CentOS7 ~]$ cd /vagrant/
(python36env) [vagrant@CentOS7 vagrant]$ django-admin startproject devops   启动django项目后如下图生成devops项目目录

用windows上装的pycharm软件(打开远程项目)打开此devops项目:

进行项目设置:

找解释器(用远程的)file-->setting-->project:devops--->project interpreter-->add这里选vagrant且它的目录一定要选vagrant的项目目录,此时它会把远程的python的全所包同步下来。

django 数据库配置:settings.py中:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'devops',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': 3306,
'OPTIONS':{
'init_command': 'SET default_storage_engine=INNODB;',
},
}
}
启动服务:第一种方式:

(python36env) [vagrant@CentOS7 vagrant]$ cd devops/
(python36env) [vagrant@CentOS7 devops]$ ls
devops manage.py

(python36env) [vagrant@CentOS7 devops]$ python manage.py migrate
(python36env) [vagrant@CentOS7 devops]$ python manage.py runserver   此时它就监听127.0.0.0:8000,但此时你访问此地址是访问不到的。

因为这个是一vm的linux机器,它只监听127.0.0.1这个网卡上的8000端口所以不行,得改成0.0.0.0的8000端口。

(python36env) [vagrant@CentOS7 devops]$ python manage.py runserver 0.0.0.0:8000   此时你在浏览器访问127.0.0.1的8000端口它就会帮转发到虚拟机中。

第二种方式:通过pycharm来启动给manage.py一个参数runserver 0.0.0.0:8000如下图,并点击三角号就运行了

此时在浏览器输入http://127.0.0.1:8000/  就能看到如下图效果了

但是这里要注意下我的vagrant是用的nat网络模式:所以宿主机不能直接连虚拟机,得做如下文中设置

https://www.cnblogs.com/dbslinux/p/12982385.html

到此完整的python开发环境就搭建完成了!!!!

六.vagrant package 打包自己的box镜像

  搭建完毕后等虚拟机的细节都调整好后强烈建议打包成自己的镜像,以后需要在其他电脑安装虚拟机环境或者电脑的虚拟机出问题的时候可以直接一键还原,不然要重新搭建有点繁琐。

开发环境配置一次可以生成box文件,可移植.我们在vagrant的虚拟机下面进行了一些操作之后想把它导出作为备份,为的是以后在别的机器上安装完vagrant以后可以立即导入自己熟悉的box进行开发。就是将虚拟机打包出去,方便以后或者别人直接使用。当别人拿到我们打包后的镜像文件,直接使用vagrant init即可使用,此时同样的会生成一个Vagrantfile配置文件,我们需要对虚拟机进行操作,直接在配置文件修改即可。

1、查看虚拟机名称
  去到虚拟机安装目录,执行命令:vboxmanage list vms

这里有可能提示:‘vboxmanage’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。那是因为VirtualBox安装的时候没有将vboxmanage自动放入环境变量中,我们可以直接进入VirtualBox的安装目录执行这句命令,也就是VirtualBox.exe这个文件的同级目录.

  data_default_1590575788478_13541就是我本地的虚拟机名称,复制下这个名字,后面打包box镜像需要用到。

2、执行打包命令
vagrant自带打包命令,需要去到你的vagrant目录下,也就是vagrantFile文件目录下执行

F:\devops\data>vagrant ssh

F:\devops\data>vagrant halt

 

3、部署回自己的box环境
到上面第二步的时候已经打包完毕了,如果想在其他电脑部署自己的box很简单
先把box文件放到需要部署的磁盘目录下。
执行以下操作命令:
1、将box安装到vagrant容器
$ vagrant box add -name centos7 package.box

$vagrant init centos7
2、然后直接启动即可
$ vagrant up

一.1搭建跨平台的统一python开发环境的更多相关文章

  1. Windows搭建python开发环境,python入门到精通[一]

    从大学开始玩python到现在参加工作,已经有5年了,现在的公司是一家.net的公司用到python的比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博 ...

  2. Eclipse和PyDev搭建python开发环境

                   Eclipse和PyDev搭建python开发环境 1.1整体目标 本文档作为python学习者的新手教程,通过本教程能够了解python用途.语法.在实际工作中的应 ...

  3. Python开发环境的搭建(win7)

    一个.安装和配置Python 事实上,在开发python最好ubuntu环境.简单和易于扩展每个package. 在谈到如何win7建筑物Python开发环境. 因为python十字-platform ...

  4. Python开发环境搭建指导

    本文主要介绍Python开发环境的搭建.主要包括如下几部分内容: (1)Python软件的安装.注意版本的选择和安装过程中选项的勾选. (2)pip工具环境变量.镜像源的配置使用和常用镜像源介绍.pi ...

  5. Windows搭建python开发环境

    python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 基本概念Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum ...

  6. 『无为则无心』Python基础 — 3、搭建Python开发环境

    目录 1.Python开发环境介绍 2.Python解释器的分类 3.下载Python解释器 4.安装Python解释器 5.Python解释器验证 1.Python开发环境介绍 所谓"工欲 ...

  7. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  8. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  9. ubuntu上用eclipse搭建java、python开发环境

    上一篇文章讲到如何在windwos上用eclipse搭建java.python开发环境,这一讲将关注如何在ubuntu上实现搭建,本人使用虚拟机安装的ubuntu系统,系统版本为:14.04 lts ...

随机推荐

  1. Java实现 LeetCode 636 函数的独占时间(栈)

    636. 函数的独占时间 给出一个非抢占单线程CPU的 n 个函数运行日志,找到函数的独占时间. 每个函数都有一个唯一的 Id,从 0 到 n-1,函数可能会递归调用或者被其他函数调用. 日志是具有以 ...

  2. Java实现 LeetCode 135 分发糖果

    135. 分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. ...

  3. Java实现 蓝桥杯VIP 算法提高 选择排序

    算法提高 选择排序 时间限制:1.0s 内存限制:256.0MB  选择排序 问题描述 排序,顾名思义,是将若干个元素按其大小关系排出一个顺序.形式化描述如下:有n个元素a[1],a[2],-,a[ ...

  4. 【CSS】常用色值

    常用颜色: 嫣红(red):#e54d42 桔橙(orange):#f37b1d 明黄(yellow):#fbbd08 橄榄(olive):#8dc63f 森绿(green):#39b54a 天青(c ...

  5. Python UI自动化测试实操

    本UI 自动化框架主要的实验的目的是:完成了登录页面的自动化登录与打开会员中心的页面这一自动化的过程. 废话不多说,直接上代码截图: 我们首先来看看整个工程的目录结构,这样以便于了解项目的调用关系: ...

  6. MYSQL 实现ROWNO功能

    select tt.rowno  from( select (@rownum:=@rownum+1) as rowno, t.id    from news t ,(select (@rownum : ...

  7. 使用PyQtGraph绘制数据滚动图形(4)

    app = pg.QtGui.QApplication([]) win = pg.GraphicsWindow(title="数据滚动") win.resize(600,300) ...

  8. App接口设计之token的php实现

    为了保证移动端和服务端数据传输相对安全,需要对接口进行加密传输. 一.ttoken的设计目的:  因为APP端没有和PC端一样的session机制,所以无法判断用户是否登陆,以及无法保持用户状态,所以 ...

  9. 想要学深度学习但是没有GPU?我帮你找了一些不错的平台

    本文始发于个人公众号:TechFlow,原创不易,求个关注 上次给大家推荐了免费的spark集群之后,就有很多小伙伴来问我有没有好的云GPU平台推荐.我一直没给大家推荐,主要原因是我常年使用Mac,对 ...

  10. 关于宝塔面板ftp+sublime

    如果sublime通过ftp上传文件传不上去,我的问题在于应该把sftp-config.json中"remote_path": "/",设置成这样.一下午.哎呀 ...