SwitchHosts! v0.2 版发布

去年写了一个快速切换 hosts 的软件 SwitchHosts!,这一年里接到很多反馈意见,综合考虑了大家的意见以及自己能投入的时间之后,我终于在它的 v0.1 版发布马上一周年之际发布了 v0.2 版。

新版本 SwitchHosts! 的截图见下面:

SwitchHosts! v0.2

这次升级主要的改进有:

  1. 改进界面;
  2. 添加在线方案,允许用户引入网络上的 hosts 方案;
  3. 支持方案导入及导出,方便分享自己的配置方案;
  4. 优化语法高亮控件,修复渲染长 hosts 时闪屏的问题;
  5. 修复程序在中文目录下无法运行的问题;
  6. 支持 hosts 排序(拖拽排序);

希望大家喜欢这个新版本,也欢迎继续提意见!:-)

(2015-12-20 更新:SwitchHosts! 第三版已发布。

分类:编程标签:SwitchHostswxPython工具产品Python

相关文章:

评论:

xstar

切换后查看Hosts里的注释中文显示为乱码,请这个怎么解决呢?

oldj

SwitchHosts! 在打开 hosts 文件时会尝试自动检测编码,保存时会统一使用用 utf-8 编码保存。可能是打开你的那个文件时检测编码出错了?这个应该是一次性的,你新写的中文注释应该不会再显示为乱码了。

Charles

非常喜欢新版本,老的版本闪得那是一个厉害,不影响使用,但是太闪了。新版棒极了!!但是,还是没有我要的功能,就是common host的功能,所以我fork了一个出来,自己加了这个功能。想请教一下楼主,怎样制作Windows绿色版,还望赐教,不胜感激。源代码地址为:https://github.com/charlestang/SwitchHosts

oldj

那个Common hosts的功能我也想过,但是没想好交互怎么设计,所以这个版本没做,我先参考下你的分支,嘿嘿。:-)
制作成exe文件可以使用py2exe或pyInstaller,我用的是pyInstaller。
比如你的pyInstaller目录在 D:toolspyinstaller-2.0,SwitchHosts!源码在 D:studioSwitchHosts,那么只需要在命令行下使用类似下面的命令就可以打包成绿色exe了:
D:toolspyinstaller-2.0> pyinstaller.py -w -F --icon=D:studioSwitchHostsuiimgicon_0.ico --name=SwitchHosts --out=D:studioSwitchHostsdist D:studioSwitchHostssrcSwitchHosts.py

Charles

我今天用py2exe折腾了一中午,硬是没有弄成功,太烦了,缺这缺那的。老说我缺少MSVCP90.dll,然后exclude dll,还是不行,后来下了个GUI2Exe,就是py2exe的UI版本,结果编出来了,但是不能运行……崩溃啊……希望尽快看到原作的功能,这样我这个山寨版就可以下岗了。我做完才看明白,原来host文件可以从云端下发,太先进了。我顿时就后悔了,应该把common host的功能设计成既支持云端,又支持本地,或者干脆用两个。那样更灵活。唉……等我学会打包再试试。

Charles

终于编译出来了,https://github.com/charlestang/SwitchHosts/downloads 到这里可以下载,内牛满面啊!!!谢谢老杰〜 XD

dolly

提示无权限修改 hosts 文件。程序在 D 盘根目录下,系统是 win 8 x64 英文版。
在 Win 7 下没有权限问题么?还是用之前都要手动获取 hosts 文件权限?

oldj

是以管理员权限运行的吗?

victorwoo

在线Host有没有推荐的地址?

oldj

还真没有,呵呵……

victorwoo

哎,老大牵头一下嘛,行情您最了解了,不然这个功能意义不是不大?

dql

我有个建议,直接从github上已有的hosts文件的raw文件下载。
现在填写一个raw文件提示url无法访问,我翻了一下源码,发现程序在判断url是否存在的时候,用的是head方式:connection.request("HEAD", path)
应该是github不接受head请求,希望这个地方改进下。
我是搞java的,不会python,但是能看懂。

forest

Python开发的必然好啊,可惜生态圈太小。。顶作者!
PS: 一年前我开发过一个Python应用程序,底层逻辑用py棒极了,可是前台展示却成了问题。当时我是用的Qt GUI,真的很受限制。wx一开始考虑过,但是总觉得不够漂亮就没去用。现在想通了,既然大家都往web里钻,当时真的应该做成个webapp的

oldj

WebAPP也有很多限制,比如切换系统hosts这个功能好像就很难做成WebAPP。貌似TideSDK不错,能兼有WebAPP的漂亮和Python的强大,不过和wx以及pyQt一样,打包之后的尺寸比较大。

forest

嘿嘿,我是说直接写一个简单的本地http server(或web service + 前台js)就好了,比如用web.py。这样你点击托盘图标的时候只要直接打开http://127.0.0.1:2012/就好了。

webApp对本地基本无权限,就算上了HTML5也无济于事。

fx

有chrome插件版本的

绝望生鱼片

建议加入开机启动最小化的功能!!还有同时应用多个HOST方案,

绝望生鱼片

在WIN8下,单击托盘的图标界面弹不出来,要双击才弹出来,建议增加全局自定义快捷键切换到指定方案!

杨富平

好东西,正需要!!老季出品,必是精品。。

oldj

多谢支持!:-D

jdhosty

我不知道common host 怎么弄,没有找到说明文档

oldj

最新版本的 SwitchHosts! 里,左边的列表最上面有一个“公用 hosts”选项,点击就可以看到公用 hosts(common hosts)内容,然后填写内容就可以了。

应用某个 hosts 方案时,公用 hosts 的内容会被自动添加在最前面。

jdhosty

刚立马去更新了,非常感谢作者,这是另一种的帮助文档,也是一个很好用的工具,非常感谢,向你致敬

oldj

感谢支持!:-)

mlj

同学 从其他HOST切换到 当前系统host时 貌似 当前系统host不太对吧

郑哲友

感谢分享这么好的作品,正需要这个工具。。

SmallAnt

您好!我是一名Ubuntu爱好者,接触Python不多,想要在Ubuntu 12.10上运行SwitchHosts! v0.2,从git上下载了您的程序。但无论是直接用Python 2.7.3直接运行SwitchHosts.py,还是根据提示先用pyinstaller打包后再运行,都有错误提示。
其中,直接运行SwitchHosts.py的提示为:
Traceback (most recent call last):
File "SwitchHosts.py", line 127, in
main()
File "SwitchHosts.py", line 123, in main
sh.run()
File "SwitchHosts.py", line 56, in run
taskbar_icon=self.taskbar_icon,
File "/home/dukeant/SwitchHosts/src/libs/MainFrame.py", line 71, in init
title or self.default_title, pos, size, style)
File "/home/dukeant/SwitchHosts/src/libs/ui.py", line 147, in init
self.m_textCtrl_content = self.makeTextCtrl(bSizer6)
File "/home/dukeant/SwitchHosts/src/libs/ui.py", line 224, in makeTextCtrl
txt_ctrl.SetMaxLength(0)
AttributeError: 'HostsCtrl' object has no attribute 'SetMaxLength'

用pyinstaller打包的命令为:
python pyinstaller.py -w -F --icon=/home/dukeant/SwitchHosts/src/img/logo.ico --name=SwitchHosts --out=/home/dukeant/SwitchHosts/src/dist /home/dukeant/SwitchHosts/src/SwitchHosts.py
运行打包生成的程序,报错为:
Traceback (most recent call last):
File "", line 127, in
File "", line 123, in main
File "", line 56, in run
File "/home/dukeant/SwitchHosts/src/dist/build/pyi.linux2/SwitchHosts/out00-PYZ.pyz/libs.MainFrame", line 71, in init
File "/home/dukeant/SwitchHosts/src/dist/build/pyi.linux2/SwitchHosts/out00-PYZ.pyz/libs.ui", line 147, in init
File "/home/dukeant/SwitchHosts/src/dist/build/pyi.linux2/SwitchHosts/out00-PYZ.pyz/libs.ui", line 224, in makeTextCtrl
AttributeError: 'HostsCtrl' object has no attribute 'SetMaxLength'
(dukeant是我自己的账户名)
不知道哪里出了问题,求教!

oldj

是不是wxPython的版本太低啊?你的wxPython是什么版本?

SmallAnt

Google了一下,还是不清楚如何查看wxPython版本?我找了一下,与wxPython有关的,我安装了python-wxtools 2.8.12.1-11ubuntu3.1。

oldj

在终端里输入类似这样的命令就可以看wxPython的版本了:

python -c "import wx;print(wx.version)"

我的是2.9.4.0版。用到了一些新特性,需要2.9版才能运行。

SmallAnt

的确,我用的是Ubuntu默认软件源里的2.8.12.1。下载了wxWidgets-2.9.4,正在研究如何安装……

navy

感谢分享,能把需要的wx,chardet,simplejson的包也放到代码里面么?O(∩_∩)O谢谢

oldj

wx太庞大了,chardet、simplejson等第三方包可以通过easy_install或pip安装啊。

wiley

我看了下在线配置方案,对于http下载这些Host信息,对服务器有什么要求吗?
我用一个txt去存放配置文件,结果URL无法访问的问题
但是我在浏览器里面又能正常打开,请问这是什么问题。有没有对在线配置方案有更加具体的介绍呢?

kk

很好用,,没权限不能保存,,,能加个 host 解锁功能吗,,
,HostsX有这个

secrecy153

新建“在线方案”的时候,提示“### URL无法访问! ###”

https://smarthosts.googlecode.com/svn/trunk/hosts
https://raw.githubusercontent.com/zxdrive/imouto.host/master/imouto.host.txt
这2个hosts可以在浏览器打开,但新建在线方案时总是提示URL无法访问。
是不支持https,还是不支持中文内容?

oldj

看了一下,问题应该是这样:

在下载在线URL之前,SwitchHosts!会先尝试快速地判断一下这个URL是否存在,因为如果直接去打开URL,并且这个URL刚好打不开的话,用户就会等待很久。

判断URL是否存在的方法是httpExist(url),它实际上是向站点的域名(根目录)发一个HEAD请求。你给的第一个链接没问题,但第二个链接的域名(https://raw.githubusercontent.com)不能直接访问,会返回404状态,所以SwitchHosts!以为这个链接无法访问。

简单来说是一个代码上的缺陷,我会在下一个版本修复,感谢反馈!

顺便问一下,你用的是Windows版还是Mac版啊?

secrecy153

Windows版

ike

你好,首先感谢你和你的SwitchHosts。
这两天用SwitchHosts时遇到了点问题,一直提示hosts未能成功切换,以前都是正常的,过完年回来就不行了。
版本是0.1.6.1755

oldj

你好,可能是操作系统更新了?

0.1.6.1755 已经很久不维护了,现在最新的版本是 3.2.3 ,可以在 这儿 下载,备用下载地址:百度网盘

ike

好的,感谢,我已经下载了最新的版本了。不过有点麻烦的事情,就是每次都需要使用管理员打开软件,双击打开软件无法修改hosts,我的系统是win7

oldj

Windows系统上需要有管理员权限的程序才能修改系统hosts文件,似乎没有什么好的办法……

一个不太好的方法是修改系统hosts文件的权限,让所有人都可读写。不过这样可能会带来安全隐患,一般不推荐这么做。

puck

windows的放弃了?

oldj

现在改用 Electron 来打包,有 Windows、Mac、Linux 版,可以从 https://github.com/oldj/SwitchHosts/releases 下载。

发表评论: