Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.8.8 运行又失败了…… #226

Open
lshilshi opened this issue Apr 22, 2022 · 12 comments
Open

v3.8.8 运行又失败了…… #226

lshilshi opened this issue Apr 22, 2022 · 12 comments

Comments

@lshilshi
Copy link

出错记录

Traceback (most recent call last):
  File "D:\GreenProgram\GotoX\local\compat\__init__.py", line 118, in init
    import gevent
ModuleNotFoundError: No module named 'gevent'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\GreenProgram\GotoX\start.py", line 25, in <module>
    from local import proxy
  File "D:\GreenProgram\GotoX\local\proxy.py", line 52, in <module>
    compat.init()
  File "D:\GreenProgram\GotoX\local\common\decorator.py", line 16, in newfunc
    result = func(*args, **kwargs)
  File "D:\GreenProgram\GotoX\local\compat\__init__.py", line 120, in init
    wait_exit('无法找到 gevent 或者与 Python 版本不匹配,'
  File "D:\GreenProgram\GotoX\local\compat\__init__.py", line 13, in wait_exit
    from local.common.util import wait_exit
  File "D:\GreenProgram\GotoX\local\common\util.py", line 14, in <module>
    from .net import isipv4, isipv6
  File "D:\GreenProgram\GotoX\local\common\net.py", line 8, in <module>
    import OpenSSL
ModuleNotFoundError: No module named 'OpenSSL'
@SeaHOH SeaHOH added the 错误 label Apr 22, 2022
@SeaHOH
Copy link
Owner

SeaHOH commented Apr 22, 2022

确实,不过 Win 10 也是这样。。。
CI 打包和本地打包依赖不一样,忘记测试 CI 的依赖了。

修复版本已发布。

@SeaHOH SeaHOH changed the title 3.8.8在Win7下运行又失败了…… v3.8.8 运行又失败了…… Apr 22, 2022
@lxf1009
Copy link

lxf1009 commented Apr 23, 2022

3.8.8-r1 win7还是不行 @SeaHOH

Traceback (most recent call last):
  File "C:\软件\GotoX-3.8.8-cp310-win32\local\compat\__init__.py", line 118, in
init
    import gevent
  File "C:\软件\GotoX-3.8.8-cp310-win32\python\site-packages\gevent-21.12.0.egg\
gevent\__init__.py", line 86, in <module>
    from gevent._hub_local import get_hub
  File "C:\软件\GotoX-3.8.8-cp310-win32\python\site-packages\gevent-21.12.0.egg\
gevent\_hub_local.py", line 101, in <module>
    import_c_accel(globals(), 'gevent.__hub_local')
  File "C:\软件\GotoX-3.8.8-cp310-win32\python\site-packages\gevent-21.12.0.egg\
gevent\_util.py", line 148, in import_c_accel
    mod = importlib.import_module(cname)
  File "importlib\__init__.py", line 126, in import_module
ModuleNotFoundError: No module named 'gevent._gevent_c_hub_local'

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 23, 2022

估计是你升级时是直接覆盖,没有把 python 这个文件夹删除掉,删掉再覆盖就好了。

刚才没注意,win32 版本确实有问题,你先用 amd64 版本的,我再看看怎么解决。

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 23, 2022

看了一下,似乎只有手动修改手动打包才能解决问题,看来暂时只能打包 CPython 3.9 的 win32 版本。

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 23, 2022

刚打包了一个 Python 3.9 32 位版本的,如果你无法运行 64 位程序的话可以下载这个。

@lxf1009
Copy link

lxf1009 commented Apr 23, 2022

新打包的还是不行,这次是闪退。我用的master覆盖3.8.7是可以正常使用的。

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 23, 2022

@lxf1009 如果可能的话,请上传 log.txt 文件。我平时使用的是 64 位,32 位的只是偶尔会试一下,还真不太确定哪里不对。

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 24, 2022

又重新传了个 GotoX-3.8.8r2-cp39-win32.7z,你再试试看。

升级新版本时,不要单纯全部覆盖。

  • config 覆盖后会丢失自定义配置,应保留旧的,如新版配置有更新 (发布时会提示),可对比后添加到旧的配置中,或重新配置新的。
  • python 覆盖后可能会导致依赖错误,应先删除旧的。
  • 其它文件可保持不动,直接覆盖。
  • cert 下几个证书文件,并不会被覆盖,且应保留,否则重新生成会导致需要重新导入证书。

@lxf1009
Copy link

lxf1009 commented Apr 25, 2022

@SeaHOH 3.8.8r2-cp39这个可以了没问题了。

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 25, 2022

在openwrt 路由器上 提示没有 gevent

这不是我的问题,如果你不想用 gevent 的话,请使用 nogevent 参数启动。

打开gevent 的效果明显吗?在什么场景作用明显?已经有多线程 range 了,感觉不到gevent 的作用

好处:大量节约运行内存、降低 CPU 开销 (后者存疑,主要是我写的代码可能不太好)
坏处:降低性能、可能会有潜在的 bug

不用的话可以少些依赖,但是似乎当前版本不用它会有内存泄露,没长时间运行过,不太确定。

另外,不要老是删回复,没啥见不得人的。

@SeaHOH
Copy link
Owner

SeaHOH commented Apr 26, 2022

想在openwrt 路由器上启用gevent ,但openwrt没有相对应的packages ,当前打包的gevent 只能在windows 运行

打包说明写得很明确,就是 Windows。真没用过 openwrt,请自行搜索安装方法。

下面这个是猴子补丁吗?不打开猴子补丁 gevent 起作用吗

这个注释里也是写清楚了的,Windows 下使用 libuv 事件循环有 bug,这只是缓解措施,并非修复。其它系统和事件的组合我并不清楚,但如果相应 gevent 事件循环不会导致 GotoX 卡死、 CPU 占用异常或代理请求数据缺失,就不用打补丁。而当前默认配置已经是 libev,这个补丁也是未启用的。
所以,只要你没加 nogevent 启动参数,gevent 就一直是用到了的。当然,前提是你有正确安装 gevent。

@lshilshi

This comment was marked as off-topic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants