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 输出版本号,则大功告成