美文网首页
环境搭建篇

环境搭建篇

作者: jojoshuai | 来源:发表于2017-03-24 03:47 被阅读0次

    PRE:

    因为之前都是在本机上去搭建环境,最后搞的本机上很乱,而且稍微一不小心动到了一部分环境,就把环境搞坏了,所以想到搭建虚拟环境。然后在此虚拟机上搭建python环境

    搭建虚拟环境有两个比较流行的方式:

        1. docker搭建环境

        2. vagrant+virtualBox

    根据网上的资料,比较来说2方式比较笨重,而1方式比较轻便,其实我很想使用docker来搭环境,但是因为我还没有对docker有一个很好的了解,所以我采取了vagrant+virtualBox的方式。

    现在介绍vagrant + virtualBox的工作方式:

    这种方式本质上是在host(本机)上搭一个虚拟机,然后把环境搭建在虚拟机器里,然后通过文件夹共享的方式来实现host代码与虚拟机里的代码一致,直接在虚拟机里运行代码。virtualBox扮演一个电脑硬件的角色,vagrant扮演管理这些电脑硬件的角色,而运行于硬件上的操作系统,则是对应的系统镜像。

    下载地址:

    virtualBox: https://www.virtualbox.org/

    vagrant: https://www.vagrantup.com/  

    基础镜像: http://www.vagrantbox.es/

    搭建步骤:

    1. 新建一个目录,作为此虚拟机的目录,推荐将镜像放在这里

    2. 在本目录下,执行 vagrant init {你想命名虚拟机的名字}  {对应镜像的路径}

        如:vagrant init pythonEnv centos.box

    3. 命令执行完成之后,会有对应的 Vagrantfile 文件生成,此文件是虚拟机的配置文件

    找到 config.vm.network "private_network", ip: "192.168.33.10" 这一行,去掉前面的注视(本行的用于分配相对于host的ip地址,用于之后通过ssh访问本虚拟机,或把host的http请求打到虚拟机上)

    找到 config.vm.synced_folder "xxxx", "yyyy" 这一行,去掉前面的注释(本行用于把host的xxxx文件夹与虚拟机的yyyy文件夹相同步,即成为共享文件夹,实现host代码与虚拟机的代码一致)

    最后在文件末的end之前的一行添加

    config.ssh.username = "vagrant"

    config.ssh.password = "vagrant"

    用于设置通过ssh访问时的用户名和密码

    4. 执行vagrant up (用于启动虚拟机的命令)

    5. 通过xShell等工具,使用 ssh vagrant:vagrant@192.168.33.10 登录虚拟机

    此时一个裸的centos环境就搭建完毕了

    坑: 对于使用windows的小伙伴,需要注意virtualbox5.0之前的版本是与win10不兼容的,如果还是报错,尝试直接用virtualbox客户端登录虚拟机,如果出现 " VT-x/AMD-V 硬件加速在您的系统中不可用。某些虚拟机(如OS/2和QNX)需要该功能,并且没有它将无法启动。" 的错误,你可以参考http://blog.csdn.net/u012990532/article/details/51285338;另外在关闭Hyper-V之后,你可能还需要尝试开启vt-x,这就学要改你的bios里的设置了。(简直坑爹)

    6. 对于python,一般linux上都会有自带python,所以先使用 python -V 命令来查看是否有python和对应的python版本是什么。比较可惜的是,一般linux都会有自带python2.7,但我想用python3.5+的,所以我就只能再在虚拟机里手动再弄一个python3了。

    7. 下载python3.6源码:wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

    8. 安装依赖:yum install openssl-devel libxslt-devel -y

    我的环境会显示  已加载插件:fastestmirror 您需要 root 权限执行此命令。

    不清楚这个地方为什么会现实这个,fastestmirror是yum的一个插件,为什么会在我执行yum install xxxx的时候加载呢?有懂的小伙伴希望不吝赐教。然后我直接执行 sudo yum install openssl-devel libxslt-devel -y 可以成功执行。另外,这个依赖是我从网上教程上看到的,1.大家是怎么知道需要这两个依赖的,像php的话,会在官网的文档里有,但是我并没有在python的官网上看到这样的文档或者这样的提示(后来发现是由这样的文档的),2.OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。xslt本身是一种定义xml转换的xml语言,而libxslt是为GNOME项目而开发的XSLT的C库,gonme是一个提供图形界面的。而具体为什么依赖这个此处并不太懂,先主攻python,如果有了解的希望能解答一下。

    9. 安装:分四个步骤  解压 、配置(configure)、编译(make)、安装(make install)

    tar  zxvf    python.tgz  -C  python

    ## (将python.tgz文件解压到 python文件夹 中,若没有python文件夹则手动创建)

    ./configure --prefix=/usr/python3.6

    ##(需先cd到python文件夹下,然后此步用于配置安装路径,如果不加--prefix选项则会放到默认路径,就像windows安装文件会放在c盘软件的默认名字的地方一样,不便于管理。具体来说有如下两点:1.为了以后的维护方便,如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,很难弄清楚到底复制了那些文件、都复制到哪里去了—基本上是一塌糊涂。2. 便于卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。 优点2我具体并没有这样操作过,但是优点1是显然的);

    ##另外有可能这个路径不存在,如果不存在你可以手动创建,如果没有权限用sudo

    make

    ##make,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。

    ##我这里编译发现了一些警告:

    ###/home/vagrant/Python-3.6.1/Modules/_ctypes/_ctypes_test.c:在函数‘_testfunc_large_struct_update_value’中:/home/vagrant/Python-3.6.1/Modules/_ctypes/_ctypes_test.c:53:42:警告:形参‘in’被设定但未被使用 [-Wunused-but-set-parameter]

    ###

    make install

    ##make install,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件,如无权限则加sudo)

    make clean

    ##清除编译产生的可执行文件及目标文件(object file,*.o) 

    ##不执行也没问题,同样的需要权限

    10 把python加入环境变量

    sudo vim /usr/profile.d/python3.sh

    ###在 /usr/profile.d下新建python3.sh,/usr/profile会自动去读取 /usr/profile.d下的文件,把相应的配置放在/usr/profile.d下会方便管理

    写入代码    export PATH=$PATH:/usr/python3.6/bin 

    ###此段代码时将python的环境变量写入系统,类似于在windows下将路径写入高级设置-环境变量-path中

    保存退出后,重新编译一下

    . /usr/profile

    然后 python3 -V 输出版本号,则大功告成

    相关文章

      网友评论

          本文标题:环境搭建篇

          本文链接:https://www.haomeiwen.com/subject/kydxottx.html