“test-jb-setup”
很久以前知道有这个语言,一直没有仔细研究涉及,只知道是一个脚本语言,想着和Javascript差不多的语言。第一次有些触动是因为据说OpenStack是用Python语言写的。后来零零星星据说是一种胶水语言,可以黏合很多系统,另外说是擅长做爬虫。对于爬虫的理解,我一直是用Delphi的IdHttp来请求抓数据,并不认为有所谓擅长不擅长之说,这个问题现在还没有特别想的清楚,以后慢慢体会吧。再后来据说Python是Google的4大语言之一。然后有一个爬虫的需求,所以就用Python尝试。下面是一些学习的点滴,希望这个系列可以成为Python的一条入门之路。
对于一个语言而言,生态是很重要的,语法本身而言的影响,和整个生态而言,是微不足道的。想起以前VCL和MFC的争论,VCL的崛起和衰落,这也许也是原因吧。
Python在Linux和Mac上是内置的,通常都是2.x版本。也就是说在终端之间输入 python就可以执行了。如果只用这个版本,也就不用安装了。使用也很简单。
在终端输入 python 可以直接进入python环境,可以看到python版本号和一个输入符号«<。
python
Python 3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+2
3
>>> print("hello")
hello
从上面我们可以看到,要简单执行一个操作是很容易的,python本身也提供了很多方法,比如数学方法等等
这样就可以了。但是这样做会依赖当前会话。如果是ssh,关闭窗口的时候,python也终止了。 所以可以通过其他的工具协助来做。比如:
nohup python xxx.py &
#2、 python版本升级
上面提到的都是基于现有python版本的。如果需要替换,特别是这个时间点上,2.x和3.x版本并存,而且相互并不兼容,从长远看,一定是往前发展的。所以就存在替换版本的问题。下面以centos 7为例,介绍如何升级。
安装方式是源码安装,版本为3.4.3。需要前置很多包,否则在编译阶段会出错
yum install readline-devel sqlite-devel
yum install openssl openssl-devel
yum install zlib zlib-devel
yum install gdbm-devel
yum install xz-devel bzip2-devel
yum install tk-devel
wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
这里建议把make和 make install 分开来执行,可以看下过程有什么问题,缺什么强制安装的东西
mkdir /usr/local/python3.4.3
tar -vxf Python-3.4.3.tgz
./configure --prefix=/usr/local/python3.4.3
make
make install
#2.3、 配置修改
因为要保证2个环境并存,所以把原来/usr/bin/python 替换掉,并把pip也替换掉
mv /usr/bin/python /usr/bin/python_old
ln -s /usr/local/python3.4.3/bin/python3 /usr/bin/python
ln -s /usr/local/python3.4.3/bin/pip3 /usr/bin/pip
python --version
centos的yum是基于系统的python做的,是基于python 2.x,所以升级以后会无法使用 python 因为python版本调整过了,所以需要修改yum配置
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
第一行修改成
#!/usr/bin/python2
否则会有报错
except KeyboardInterrupt, e:
有安装也对应有卸载。下面是Mac的脚本,供参考。
sudo rm -r /Library/Frameworks/Python.framework /Applications/Python\ 3.* /Library/Receipts/Python*-3.*.pkg
sudo rm -Rfv /Library/Frameworks/Python.framework/ /Applications/Python\ 3.*/
cd /usr/local/bin/
sudo rm -fv 2to3 2to3-3.* idle3 idle3.* pydoc3 pydoc3.* python3 python3-32 python3-config python3.* python3.*-32 python3.*-config python3.*m python3.*m-config pythonw3 pythonw3-32 pythonw3.* pythonw3.*-32 /Developer/Documentation/Python/Reference\ Documentation\ 3.*
因为自己现在用的是 zsh,如果有调整,原来放在 .bash_profile里面的,需要改成放到.zshrc。
目的是为了安装别人做好的库,Package。安装通常是通过pip命令来做。pip会随着python的安装一起安装。
#3.1、 通过pipy
这个可以理解为yum, apt-get 类似的命令,它会去pypi找一个中央库,然后从那里下载。简单方便
pip install flash-restful
#3.2、 依赖安装
对于已经做好的一个项目,里面会用到很多依赖的外部python包,这个时候可以通过一个文本文件列出所有依赖的文件。通过-r参数来安装,如
pip install -r requirements.txt
这个文件可以自己写,也可以通过工具生成。
redis == 2.10.5
requests == 2.8.1
$ pip install pipreqs
$ pipreqs 项目路径
#3.3、本地源码安装
没装过
#3.4、允许外部
pip install --allow-external mysql-connector-python mysql-connector-python
不加 –allow-external 会提示,照着提示也能搞定
#3.4、在线安装
pip install -e "git://github.com/FelixLoether/flask-uploads#egg=Flask-Uploads
通过这样的方式,就可以安装最新的版本,应该也算是源码安装吧
#3.5、 升级pip
pip install --upgrade pip
可以通过帮助看到,一般是 list看安装过的程序,通过upgrade升级
#4、 开发工具选择
工具很多,基于上面的描述,我们用普通的文本编辑器就够了,对于生产力工具来说。当然还是推荐使用成熟的IDE工具,推荐使用PyCharm
“test-jb-setup”
机器就在身边,不想重装。
为了解决避免Linux自动休眠,找了文章说修改xorg.conf。结果发现没这个文件,而是一个文件夹。进入修改文件。
vi /etc/X11/xorg.conf
Option “DPMS” “false”
Section “ServerFlags”
Option “BlankTime” “0”
Option “StandbyTime” “0”
Option “SuspendTime” “0”
Option “OffTime” “0”
EndSection
然后就杯具了,进不去了。原因是Option要在某个EndSection下面
linux启动的时候有个地方可以选择进入什么模式,这里可以通过操作进入grub。在CentOS7下面没发现 a 操作键,而只有c和e。
c就是进入grub的命令行界面,输入一些命令发现没用。
比如输入 root(hd0) 就没有效果。干脆就进入e。界面有点像是一个脚本文件。通过上下键定位到
linux16开头的这一行,找到ro,改成rw init=/sysroot/bin/sh。
然后用快捷键 ctrl + x重启
再次进入会到命令行界面,但是这个时候通过 ls命令会发现里面内容很少。/etc/下面没有 X11文件夹。所以需要通过命令来切换
chroot /sysroot/
就会发现文件多了很多。 如果需要修改密码可以直接
passwd root
修改 /etc/X11/xorg.conf.d/00-keyboard.conf
Section “InputClass” Identifier “system-keyboard” MatchIsKeyboard “on” Option “XkbLayout” “cn” EndSection Section “ServerFlags” Option “BlankTime” “0” Option “StandbyTime” “0” Option “SuspendTime” “0” Option “OffTime” “0” EndSection Section “Monitor” Option “DPMS” “false” EndSection
“test-jb-setup” 很奇怪的是,默认没有启用,所以使用起来就比较麻烦了。最后做了一个sh的文件。
“test-jb-setup”
直接安装的时候,用rpm命令,提示错误。
rpm -ivh teamviewer.i686.rpm
警告:teamviewer.i686.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID 72db573c: NOKEY
错误:依赖检测失败:
libc.so.6(GLIBC_2.4) 被 teamviewer-10.0.46203-0.i686 需要
libgcc_s.so.1 被 teamviewer-10.0.46203-0.i686 需要
libasound.so.2 被 teamviewer-10.0.46203-0.i686 需要
libfontconfig.so.1 被 teamviewer-10.0.46203-0.i686 需要
libfreetype.so.6 被 teamviewer-10.0.46203-0.i686 需要
libjpeg.so.62 被 teamviewer-10.0.46203-0.i686 需要
libpng12.so.0 被 teamviewer-10.0.46203-0.i686 需要
libSM.so.6 被 teamviewer-10.0.46203-0.i686 需要
libXdamage.so.1 被 teamviewer-10.0.46203-0.i686 需要
libXext.so.6 被 teamviewer-10.0.46203-0.i686 需要
libXfixes.so.3 被 teamviewer-10.0.46203-0.i686 需要
libXinerama.so.1 被 teamviewer-10.0.46203-0.i686 需要
libXrandr.so.2 被 teamviewer-10.0.46203-0.i686 需要
libXrender.so.1 被 teamviewer-10.0.46203-0.i686 需要
libXtst.so.6 被 teamviewer-10.0.46203-0.i686 需要
libz.so.1 被 teamviewer-10.0.46203-0.i686 需要
这个比较简单,直接在 yum.repo.d下面拷贝一个文件
然后修改成本地路径名,注意一下空格的转义就可以了
yum clean all
yum update
yum localinstall teamviewer.i686.rpm
已加载插件:fastestmirror, langpacks
正在检查 teamviewer.i686.rpm: teamviewer-10.0.46203-0.i686
teamviewer.i686.rpm 将被安装
正在解决依赖关系
–> 正在检查事务
—> 软件包 teamviewer.i686.0.10.0.46203-0 将被 安装
–> 正在处理依赖关系 libc.so.6(GLIBC_2.4),它被软件包 teamviewer-10.0.46203-0.i686 需要
Loading mirror speeds from cached hostfile
依赖关系解决
============================================================================================================================================================================================================ Package 架构 版本 源 大小 ============================================================================================================================================================================================================ 正在安装: teamviewer /25 i686 10.0.46203-0 /teamviewer.i686 122 M 为依赖而安装: alsa-lib i686 1.0.28-2.el7 base 391 k expat i686 2.1.0-8.el7 base 80 k fontconfig i686 2.10.95-7.el7 base 229 k freetype i686 2.4.11-10.el7_1.1 updates 388 k glibc i686 2.17-78.el7 base 4.2 M libICE i686 1.0.8-7.el7 base 62 k libSM i686 1.2.1-7.el7 base 37 k libX11 i686 1.6.0-2.1.el7 base 608 k libXau i686 1.0.8-2.1.el7 base 29 k libXdamage i686 1.1.4-4.1.el7 base 20 k libXext i686 1.3.2-2.1.el7 base 38 k libXfixes i686 5.0.1-2.1.el7 base 18 k libXi i686 1.7.2-2.1.el7 base 39 k libXinerama i686 1.1.3-2.1.el7 base 14 k libXrandr i686 1.4.1-2.1.el7 base 25 k libXrender i686 0.9.8-2.1.el7 base 25 k libXtst i686 1.2.2-2.1.el7 base 20 k libgcc i686 4.8.3-9.el7 base 99 k libjpeg-turbo i686 1.2.90-5.el7 base 137 k libpng12 i686 1.2.50-6.el7 base 181 k libuuid i686 2.23.2-22.el7_1.1 updates 74 k libxcb i686 1.9-5.el7 base 178 k nss-softokn-freebl i686 3.16.2.3-13.el7_1 updates 187 k zlib i686 1.2.7-13.el7 base 90 k
安装 1 软件包 (+24 依赖软件包)
总计:129 M
总下载量:7.1 M
安装大小:143 M
Is this ok [y/d/N]: y
Downloading packages:
(1/24): expat-2.1.0-8.el7.i686.rpm | 80 kB 00:00:00
(2/24): libICE-1.0.8-7.el7.i686.rpm | 62 k B 00:00:00
(3/24): libSM-1.2.1-7.el7.i686.rpm | 37 kB 00:00:00
(4/24): libX11-1.6.0-2.1.el7.i686.rpm | 608 kB 00:00:00
(5/24): libXau-1.0.8-2.1.el7.i686.rpm | 29 kB 00:00:00
(6/24): libXdamage-1.1.4-4.1.el7.i686.rpm | 20 kB 00:00:00
(7/24): libXext-1.3.2-2.1.el7.i686.rpm | 38 kB 00:00:00
(8/24): libXfixes-5.0.1-2.1.el7.i686.rpm | 18 kB 00:00:00
(9/24): libXi-1.7.2-2.1.el7.i686.rpm | 39 kB 00:00:00
(10/24): libXinerama-1.1.3-2.1.el7.i686.rpm | 14 kB 00:00:00
(11/24): libXrandr-1.4.1-2.1.el7.i686.rpm | 25 kB 00:00:00
(12/24): alsa-lib-1.0.28-2.el7.i686.rpm | 391 kB 00:00:02
(13/24): libXrender-0.9.8-2.1.el7.i686.rpm | 25 kB 00:00:00
(14/24): libXtst-1.2.2-2.1.el7.i686.rpm | 20 kB 00:00:00
(15/24): libgcc-4.8.3-9.el7.i686.rpm | 99 kB 00:00:00
(16/24): libjpeg-turbo-1.2.90-5.el7.i686.rpm | 137 kB 00:00:00
(17/24): fontconfig-2.10.95-7.el7.i686.rpm | 229 kB 00:00:03
(18/24): libpng12-1.2.50-6.el7.i686.rpm | 181 kB 00:00:00
(19/24): freetype-2.4.11-10.el7_1.1.i686.rpm | 388 kB 00:00:03
(20/24): libuuid-2.23.2-22.el7_1.1.i686.rpm | 74 kB 00:00:00
(21/24): zlib-1.2.7-13.el7.i686.rpm | 90 kB 00:00:00
(22/24): nss-softokn-freebl-3.16.2.3-13.el7_1.i686.rpm | 187 kB 00:00:00
(23/24): libxcb-1.9-5.el7.i686.rpm | 178 kB 00:00:01
(24/24): glibc-2.17-78.el7.i686.rpm | 4.2 MB 00:00:06
————————————————————————————————————————————————————————————————————
总计 1.0 MB/s | 7.1 MB 00:00:06
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : libgcc-4.8.3-9.el7.i686 1/25
正在安装 : glibc-2.17-78.el7.i686 2/25
正在安装 : nss-softokn-freebl-3.16.2.3-13.el7_1.i686 3/25
正在安装 : freetype-2.4.11-10.el7_1.1.i686 4/25
正在安装 : zlib-1.2.7-13.el7.i686 5/25
正在安装 : expat-2.1.0-8.el7.i686 6/25
正在安装 : fontconfig-2.10.95-7.el7.i686 7/25
正在安装 : libpng12-1.2.50-6.el7.i686 8/25
正在安装 : libICE-1.0.8-7.el7.i686 9/25
正在安装 : libjpeg-turbo-1.2.90-5.el7.i686 10/25
正在安装 : libXau-1.0.8-2.1.el7.i686 11/25
正在安装 : libxcb-1.9-5.el7.i686 12/25
正在安装 : libX11-1.6.0-2.1.el7.i686 13/25
正在安装 : libXext-1.3.2-2.1.el7.i686 14/25
正在安装 : libXfixes-5.0.1-2.1.el7.i686 15/25
正在安装 : libXrender-0.9.8-2.1.el7.i686 16/25
正在安装 : libXrandr-1.4.1-2.1.el7.i686 17/25
正在安装 : libXdamage-1.1.4-4.1.el7.i686 18/25
正在安装 : libXinerama-1.1.3-2.1.el7.i686 19/25
正在安装 : libXi-1.7.2-2.1.el7.i686 20/25
正在安装 : libXtst-1.2.2-2.1.el7.i686 21/25
正在安装 : libuuid-2.23.2-22.el7_1.1.i686 22/25
正在安装 : libSM-1.2.1-7.el7.i686 23/25
正在安装 : alsa-lib-1.0.28-2.el7.i686 24/25
正在安装 : teamviewer-10.0.46203-0.i686 25/25
验证中 : libICE-1.0.8-7.el7.i686 1/25
验证中 : fontconfig-2.10.95-7.el7.i686 2/25
验证中 : freetype-2.4.11-10.el7_1.1.i686 3/25
验证中 : teamviewer-10.0.46203-0.i686 4/25
验证中 : libXext-1.3.2-2.1.el7.i686 5/25
验证中 : libXdamage-1.1.4-4.1.el7.i686 6/25
验证中 : nss-softokn-freebl-3.16.2.3-13.el7_1.i686 7/25
验证中 : libXinerama-1.1.3-2.1.el7.i686 8/25
验证中 : libjpeg-turbo-1.2.90-5.el7.i686 9/25
验证中 : libgcc-4.8.3-9.el7.i686 10/25
验证中 : libXau-1.0.8-2.1.el7.i686 11/25
验证中 : libSM-1.2.1-7.el7.i686 12/25
验证中 : libXrandr-1.4.1-2.1.el7.i686 13/25
验证中 : libpng12-1.2.50-6.el7.i686 14/25
验证中 : libXtst-1.2.2-2.1.el7.i686 15/25
验证中 : libXfixes-5.0.1-2.1.el7.i686 16/25
验证中 : libX11-1.6.0-2.1.el7.i686 17/25
验证中 : libuuid-2.23.2-22.el7_1.1.i686 18/25
验证中 : libXi-1.7.2-2.1.el7.i686 19/25
验证中 : zlib-1.2.7-13.el7.i686 20/25
验证中 : alsa-lib-1.0.28-2.el7.i686 21/25
验证中 : libxcb-1.9-5.el7.i686 22/25
验证中 : libXrender-0.9.8-2.1.el7.i686 23/25
验证中 : expat-2.1.0-8.el7.i686 24/25
验证中 : glibc-2.17-78.el7.i686 25/25
已安装: teamviewer.i686 0:10.0.46203-0
作为依赖被安装: alsa-lib.i686 0:1.0.28-2.el7 expat.i686 0:2.1.0-8.el7 fontconfig.i686 0:2.10.95-7.el7 freetype.i686 0:2.4.11-10.el7_1.1 glibc.i686 0:2.17-78.el7 libICE.i686 0:1.0.8-7.el7 libSM.i686 0:1.2.1-7.el7 libX11.i686 0:1.6.0-2.1.el7 libXau.i686 0:1.0.8-2.1.el7 libXdamage.i686 0:1.1.4-4.1.el7 libXext.i686 0:1.3.2-2.1.el7 libXfixes.i686 0:5.0.1-2.1.el7 libXi.i686 0:1.7.2-2.1.el7 libXinerama.i686 0:1.1.3-2.1.el7 libXrandr.i686 0:1.4.1-2.1.el7 libXrender.i686 0:0.9.8-2.1.el7 libXtst.i686 0:1.2.2-2.1.el7 libgcc.i686 0:4.8.3-9.el7 libjpeg-turbo.i686 0:1.2.90-5.el7 libpng12.i686 0:1.2.50-6.el7 libuuid.i686 0:2.23.2-22.el7_1.1 libxcb.i686 0:1.9-5.el7 nss-softokn-freebl.i686 0:3.16.2.3-13.el7_1 zlib.i686 0:1.2.7-13.el7
完毕!
**配置只针对Mac**
一个安装工具,简单理解类似apt-get。想装什么一个命令就装上了,不用再去下载了。
在终端执行下面的语句就安装好了
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
简单命令
检查当前装了哪些应用
brew list
安装某个应用
brew install xxx
卸载某个应用
brew uninstall xxx
##1.2、安装node和mongodb 有了brew打底,直接
brew install node
brew install mongodb
##1.3、安装依赖包 node.js有自己的包管理方案,即npm,通过它很容易就可以安装卸载依赖。 这里的依赖简单理解就是现成的js库,实现特定功能。和jar包不太一样,它是源码形式的。而为了管理依赖关系,一个node工程会有一个package.js的文件,如:
{
"name": "test",
"version": "2.0.0",
"description": "Test",
"main": "index.js",
"scripts": {
"start": "node ./start.js",
"test": "node ./index.js"
},
"author": "xxx",
"license": "ISC",
"dependencies": {
"express": "^4.13.4",
"express-restify-mongoose": "^1.0.7",
"lodash": "^3.9.3"
},
"devDependencies": {
}
}
在它所在文件夹下执行
npm install
即可安装所有的依赖,所有的包都会下载到相同目录的node_modules文件夹下。如果需要单独安装,可以在install后面带参数,如
npm install xxx
##1.4、安装调试工具 node.js的调试方法很多,这次用到的是node-inspector,安装很简单。如下
npm install -g node-inspector
使用它可以直接在chrome里面调试node.js
#2、如何调试 #2.1 以debug模式启动
node --debug-brk=5858 start.js
这样就启动了debug模式了
#2.2开启inspector
$ node-inspector
Node Inspector v0.11.1
Visit http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 to start debugging.
比较推荐2个,都是chrome插件
个人更喜欢前一个,可能用的比较早的原因
#3、MongoDB简单使用 #3.1 启动
mongod --config /usr/local/etc/mongod.conf --auth
最后这个–auth用于验证,稍微麻烦点,本就不用开了
#3.2 查询删除
mongo 127.0.0.1:27017
show dbs
use xxxx
show collections
db.xxxxx.find()
db.dropDatabase()
#3.3 三方工具 推荐Robomongo和Mongo Management Studio,大同小异