bad interpreter: 没有那个文件或目录

起因

今天在linux上运行一个python脚本,总是报错bad interpreter,开始我以为是解释器的路径问题,可是whereis python告诉我路径没有错!

google之,问题解决:

在windows上编辑的脚本,到linux上执行,会提示上面的错误

解决办法

dos2unix myfilename

报错的话执行一下yum install dos2unix -y

原因

在windows下编辑的脚本,是dos格式的,即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A。

以后再windows上的写脚本一定要三思!

今天写了个采集脚本,使用了BeautifulSoup,所以在代码中有下面的import语句

from BeautifulSoup import BeautifulSoup as BS

在win下执行,没问题,但是在linux下执行,就报这个错误

ImportError: No module named BeautifulSoup

google之

转自快乐&&平凡

脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单

#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器;
#!/usr/bin/env python这种用法是为了防止操作系统用户没有将python装在默认的/usr/bin路径里。当系统看到这一行的时候,首先会到env设置里查找python的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python相当于写死了python路径;
#!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法。

而我的/usr/bin/python是2.6版本,但是安装BeautifulSoup的是2.7。。。

#mv /usr/bin/python /usr/bin/python2.6.6
#ln -s /usr/local/bin/python2.7 /usr/bin/python

成功解决!

以centos为例,执行yum install -y vim后,打开php、py等文件,发现中文乱码了。。。

google之

解决办法:

vim /etc/.vimrc

将以下内容写入

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

再次打开,中文已正常显示。

转自潘魏增的博客!

python2.5中的urllib2支持http代理,不支持socks代理。假如代码库或者编码时使用了urllib2,同时又要使用socks,就需要第三方的库来实现。幸运的是,已经有人造好了轮子。

SocksiPy是一个socks module。它提供了一个类socket的接口,支持socks4、socks5和http proxy。下载后在代码中引用socks.py即可,也可以写个setup.py文件安装到python的site-packages目录中。 使用时,将下面的代码放在调用urllib2的代码之前即可:

import socks
import socket
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 8080)
socket.socket = socks.socksocket
import urllib2
print urllib2.urlopen('http://baidu.com').read()

如果是自己写的程序,也可以尝试使用pycurl这个库。ubuntu使用sudo apt-get install python-pycurl python-pycurl-dbg安装。 示例代码

import pycurl
c = pycurl.Curl()
c.setopt(pycurl.URL, 'http://baidu.com')
c.setopt(pycurl.PROXY, '127.0.0.1')
c.setopt(pycurl.PROXYPORT, 8080)
c.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
c.perform()

如果在程序外部使用socks,推荐使用tsocks。ubuntu中直接使用sudo apt-get install tsocks安装。安装完毕以后需要修改/etc/tsocks.conf。配置样例如下

# 默认代理服务器
server = 127.0.0.1 
# 代理服务器类型  
server_type = 5 
# 代理服务器端口
server_port = 8080

使用时,在命令行输入tsocks 程序名即可。例如ubuntu下的epiphany浏览器没有代理设置,如果想使用socks代理,输入tsocks epiphany-browser即可(注意先关闭其他的epiphany实例)。

之前大家翻墙可能都会用到免费的goagent代理,但是他速度慢,链接也不稳定,看油管更是无望,更好的解决方案是shadowsocks。

shadowsocks是一个著名的轻量级socket代理,基于python编写。

如果你有国外的VPS,那么使用shadowsocks搭建一个翻{防屏蔽}墙服务器是一件很轻松的事情!

先看看shadowsocks覆盖的客户端覆盖了多少系统,连OpenWRT都支持!

shadowsocks客户端

老高之前买的$4.99一年的VPS,128MB,用起来妥妥的!现在已经升级至$9.99,512MB内存,运行速度更快,翻{防屏蔽}墙速度更是没话说,如果你感兴趣,可以看看VPS购买攻略

看完本文,你就能够轻松打造独享的翻{防屏蔽}墙环境!甚至能够将shadowsocks安装到你的路由器中,子网设备自动翻墙!再也不需要在网上购买shadowsocks的账号了,也不需要在忍受速度巨慢的免费shadowsocks账号了。

如果你的VPS是搬瓦工,那么恭喜你!你可以直接在后台一键安装shadowsocks,具体如何操作请参考使用搬瓦工(bandwagonhost)后台管理VPS&安全设置中如何一键安装shadowsocks一节,配置完毕后ss就会运行在后台,重启后也会自动运行。

友情提示:有些打包好的ss程序很难保证是否会记录你的服务器信息,所以一定要经常更新服务器端的密码或端口!或者,自己编译一个。。。。。

阅读剩余部分

VPS大家手里多多少少都会有那么一两个(win请绕道),如果能让他们在空闲的时候帮我们下载一些很大,但是又下载很慢的种子,岂不是一举两得!

linux命令行下的torrent下载软件真的很少([rc]Torrent和Transmission的命令行版本),而且实在不太好用(当然是和迅雷不能比)。

但是如果你看完此篇,也许会发现原来在命令行里下载种子其实不是那么难!

阅读剩余部分