-
Notifications
You must be signed in to change notification settings - Fork 126
python3 版本 运行错误。 #52
Comments
你是怎么运行的? |
都是编码错误,python3的编码很烦人 # 旧的
lines = out.readlines()
# 新的
lines = out.readlines().decode('utf-8') Windows 的可以尝试改为ANSI编码,不行的话别在ini文件里输入中文。 |
@xyuanmu 不能先判断系统类别,根据不同的系统自动使用不同的编码么 |
@jzp820927 ini 文件是什么编码,那就需要对应的解码,而不是根据系统类型。win中文系统里有中文要ANSI编码才能正常读取,如果ini文件是utf-8保存而强制用ANSI读取还是会出错,所以不建议ini文件里有中文,即使有也要对应修改编码。 |
重新下载python3分支,看是否解决 arch linux 导入证书问题:https://github.com/xyuanmu/XX-Mini/archive/python3.zip |
刚才debug了下linux下的代码。发现变量lines和sha1是空的。继续追查发现是证书名改变导致。我是link(windows下是mklink)到python2版本的data目录的。也就是说sha1的encode()和decode()不需要加。加了反倒出错,具体是什么忘记了,大意是line无法encode()。 |
刚才在linux下跑了下带中文manual.ini的python3的1.1版本,没问题一切正常。 |
我也同意统一所有GAE项目的证书文件,每个项目都使用不同的证书,对用户来说是灾难。 |
证书如果同名就无法导入火狐了,试过火狐有同名证书的情况下只能删除后再导入,也就意味着P2和P3切换的时候就要不停更换证书。 |
其实我觉得统一证书问题可以这样解决,比如我 goproxy,或者 goagent,或者 XXNET,之前生成过证书了,也导入证书到系统了。现在我把 goproxy,或者 goagent,或者 XXNET,之前生成过的证书复制到 XXMINI 的data 目录下,然后 XXMINI 运行的时候,先检查 data 目录有没有 CA.crt 证书文件,如果有能不能直接调用这个证书。 也就是 XX 能不能兼容其他客户端生成的证书,这样就不存在冲突了(因为之前用 GOP,GOA,XXNET 的时候,已经导入证书了,现在就不用再导入证书,也就不存在冲突的问题)。如果 data 目录没有检查到旧证书,再生成自己独有的证书? 其实我早就想,单独发个 issuse 来提这个建议,赶脚这种模式对用户比较友好,现在一般情况也都是备份旧证书用,很少有需求生成独立的新证书,不知道 @xyuanmu 兄,能否实现这种证书的兼容性?(我觉得目前最主要是能够兼容 Goproxy 的证书,因为GOP的性能比较好了,goagent 和 XXNET,可以不兼容,goagent 已经停止开发,XXNET,和MINI是同一系软件,一般不会同时用) |
我并不了解证书是如何生成的,为何要为一份证书弄得这般复杂? |
算了吧,既然复杂就不管了,P大自己的 goproxy 和 goagent 现在的证书都不兼容,更何况还是不同人开发的。 |
正像 jzp820927 所说,以前生成过的证书,只要复制到新的GAE工作目录下就可以用,不管是谁生成的,只要名字相同就可以,不管是系统的还是火狐的,都无需再次导入。一次导入,处处使用。 不需要加encode。TypeError: Can't convert 'bytes' object to str implicitly 这个是因为变量lines和sha1是空的。 |
to jzp820927 |
https://docs.python.org/3/howto/unicode.html#files-in-an-unknown-encoding |
@cpmbwo 我知道目前是这么设计的,但是估计是证书格式不兼容,goproxy 证书拿给 XX用,或者XX证书拿给 goproxy 用,访问 https 会报错,不知道你实测过没有,反正我是实测过的。 |
@cpmbwo 既然sha1是空的那就好办了,证书还是分类导入比较妥,这样不容易出问题,理论上 XX-Net,XX-Mini,XX-Mini-P3证书是可以通用的。 config 的解码问题,不用这么纠结了,直接用国际标准 'iso-8859-1',只要不是什么牛鬼蛇神的编码都能正常读取。 |
请问python3 的pyopenssl 怎么装的? |
opkg install pyopenssl python-openssl --force-depends --force-overwrite |
我用的debian,openwrt要运行drcom的登陆脚本,cpu不够给力 |
pip3 install pyopenssl cryptography的时候出现很多警告,最后能运行python3 proxy.py了,但是不能启用log_file,但是网页都连不上 |
应该不是cpu的问题吧,我的是路由器都可以,应该是你支持库没有安装齐吧。 |
openwrt能用,但是效果不好,内存不够(运行的东西有点多),我是用beaglebone black装的debian来运行XX-Mini的,2.7版的可以用(就是我ipad不能看youtube,所以想试一下p3版的),p3的却出了这么多问题 |
youtube 和 py 的版本,八杆子扯不上关系吧 |
少装了个python-crypto,为什么会部分能看部分不能看能,(现在能看了) |
版本是1.1。
arch linux 错误信息:
Traceback (most recent call last):
File "/run/media/xxx/Win-D/Applications/XX-Mini/proxy.py", line 244, in
main()
File "/run/media/xxx/Win-D/Applications/XX-Mini/proxy.py", line 206, in main
CertUtil.init_ca()
File "/run/media/xxx/Win-D/Applications/XX-Mini/pythonlib/local/cert_util.py", line 530, in init_ca
CertUtil.import_ca(CertUtil.ca_keyfile)
File "/run/media/xxx/Win-D/Applications/XX-Mini/pythonlib/local/cert_util.py", line 493, in import_ca
CertUtil.import_debian_ca(commonname, certfile)
File "/run/media/xxx/Win-D/Applications/XX-Mini/pythonlib/local/cert_util.py", line 399, in import_debian_ca
sha1 = get_debian_ca_sha1(nss_path)
File "/run/media/xxx/Win-D/Applications/XX-Mini/pythonlib/local/cert_util.py", line 384, in get_debian_ca_sha1
sha1 = sha1.replace(b' ', b'').replace(b':', b'').replace(b'\n', b'')
TypeError: Can't convert 'bytes' object to str implicitly
Windows 错误信息:
data/manual.ini load error:'gbk' codec can't decode byte 0xae in position 14: illegal multibyte sequ
ence
Except stack:Traceback (most recent call last):
File "D:\Applications\XX-Mini\python35.zip\local\config.py", line 31, in load
self.CONFIG.read(self.CONFIG_MANUAL_FILENAME)
File "configparser.py", line 696, in read
File "configparser.py", line 1012, in _read
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 14: illegal multibyte sequence
这个错误提示是在配置信息显示前就显示了,也就是刚打开程序就有了。manual.ini的编码是UTF-8。
python2的1.2.5版本在相同的manual.ini下(一直没改过)运行正常。
The text was updated successfully, but these errors were encountered: