装个 eaf 是啥见不得人的事情吗
Debugger entered–Lisp error: (error “Process epc con 4 not running”) process-send-string(#<process epc con 4> “000045(call 10 send_key ("1838-4256-99b2-c184-0186…”) (let* ((msg (encode-coding-string (concat (eaf-epc-prin1-to-string sexp) “\n”) 'utf-8-unix)) (string (concat (format “%06x” (length msg)) msg)) (proc (progn (or (progn (and (memq … cl-struct-eaf-epc-connection-tags) t)) (signal 'wrong-type-argument (list 'eaf-epc-connection connection))) (aref connection 2)))) (eaf-epc-log “>> SEND : [%S]” string) (process-send-string proc string)) eaf-epc-net-send(#s(eaf-epc-connection :name “epc con 4” :process #<process epc con 4> :buffer # :channel (“epc con 4” nil (methods . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG METHODS: %S” args) (eaf-epc-handler-methods #s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/ema…” :server-process #<process eaf> :commands … :port 9379 :connection #1 :methods nil :sessions … :exit-hooks nil) (caadr args))) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (epc-error . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG EPC-ERROR: %S” args) (apply 'eaf-epc-handler-epc-error #s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/ema…” :server-process #<process eaf> :commands … :port 9379 :connection #1 :methods nil :sessions … :exit-hooks nil) (eaf-epc-args args))) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (return-error . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG RET-ERROR: %S” args) (apply 'eaf-epc-handler-return-error #s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/ema…” :server-process #<process eaf> :commands … :port 9379 :connection #1 :methods nil :sessions … :exit-hooks nil) (eaf-epc-args args))) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (return . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG RET: %S” args) (apply 'eaf-epc-handler-return #s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/ema…” :server-process #<process eaf> :commands … :port 9379 :connection #1 :methods nil :sessions … :exit-hooks nil) (eaf-epc-args args))) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status ok :value nil)) (call . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG CALL: %S” args) (apply 'eaf-epc-handler-called-method #s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/ema…” :server-process #<process eaf> :commands … :port 9379 :connection #1 :methods nil :sessions … :exit-hooks nil) (eaf-epc-args args))) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)))) (call 10 send_key (“1838-4256-99b2-c184-0186-a806-ad9a” “”))) (let* ((conn (progn (or (progn (and (memq … cl-struct-eaf-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'eaf-epc-manager mngr))) (aref mngr 5)))) (eaf-epc-net-send conn (cons method messages))) eaf-epc-manager-send(#s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/ema…” :server-process #<process eaf> :commands (“python.exe” “c:/Users/loubuye/.emacs.d/site-lisp/emacs-applicat…” “1002” “769” “9376”) :port 9379 :connection #s(eaf-epc-connection :name “epc con 4” :process #<process epc con 4> :buffer # :channel (“epc con 4” nil (methods . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG METHODS: %S” args) (eaf-epc-handler-methods #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (epc-error . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG EPC-ERROR: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (return-error . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG RET-ERROR: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (return . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG RET: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status ok :value nil)) (call . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG CALL: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)))) :methods nil :sessions ((10 . #s(eaf-deferred-object :callback identity :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil))) :exit-hooks nil) call 10 send_key (“1838-4256-99b2-c184-0186-a806-ad9a” “”)) (let ((uid (eaf-epc-uid)) (sessions (progn (or (progn (and (memq … cl-struct-eaf-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'eaf-epc-manager mngr))) (aref mngr 7))) (d (eaf-deferred-new))) (setq sessions (cons (cons uid d) sessions)) (progn (or (progn (and (memq (type-of mngr) cl-struct-eaf-epc-manager-tags) t)) (signal 'wrong-type-argument (list 'eaf-epc-manager mngr))) (let* ((v mngr)) (aset v 7 sessions))) (eaf-epc-manager-send mngr 'call uid method-name args) d) eaf-epc-call-deferred(#s(eaf-epc-manager :title “python.exe c:/Users/loubuye/.emacs.d/site-lisp/emacs-application-framework/eaf.py 1002 769 9376” :server-process #<process eaf> :commands (“python.exe” “c:/Users/loubuye/.emacs.d/site-lisp/emacs-applicat…” “1002” “769” “9376”) :port 9379 :connection #s(eaf-epc-connection :name “epc con 4” :process #<process epc con 4> :buffer # :channel (“epc con 4” nil (methods . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG METHODS: %S” args) (eaf-epc-handler-methods #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (epc-error . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG EPC-ERROR: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (return-error . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG RET-ERROR: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)) (return . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG RET: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status ok :value nil)) (call . #s(eaf-deferred-object :callback (lambda (args) (eaf-epc-log “SIG CALL: %S” args) (apply … #1 …)) :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil)))) :methods nil :sessions ((10 . #s(eaf-deferred-object :callback identity :errorback eaf-deferred-resignal :cancel eaf-deferred-default-cancel :next nil :status nil :value nil))) :exit-hooks nil) send_key (“1838-4256-99b2-c184-0186-a806-ad9a” “”)) (setq it (eaf-epc-call-deferred eaf-epc-process (read method) args)) (let (it) (setq it (eaf-epc-call-deferred eaf-epc-process (read method) args)) it) eaf-call-async(“send_key” “1838-4256-99b2-c184-0186-a806-ad9a” “”) eaf-send-key() funcall-interactively(eaf-send-key) command-execute(eaf-send-key)
应该…是这个报错吧,我是新手,其实不太知道怎么查看报错
你是按照README安装的吗
看上去是你的 python 或者 pyqt 的安装有问题。
我重新在 windows 装了一下 eaf,确实不成功,上一次安装的时候还是 pyqt5…
这里记录一下安装过程,等以后学了 pyqt 之后看看能不能找出问题来。
环境:
- Windows 10
- emacs 28.1 x86_64 on windows
- python 3.10
- npm 8.15.0
- node v16.17.0
1.检查环境
在 cmd 中输入 python --version
来查看 python 的版本,当然 eaf 没有对 py 版本进行明确的要求,是 py3 即可。
在 cmd 中输入 pip
来观察是否能够使用 pip。
在 cmd 中输入 git
观察是否已安装了 git。
在 cmd 中输入 node
和 npm
观察是否安装了它们。
这样就应该差不多了。
2.安装依赖
参考 eaf wiki 添上依赖项:
pip install epc
pip install wmctrl
pip install pygetwindow
因为不使用 mac 系统,mac-app-frontmost
我们不需要。
3.安装 eaf
根据 readme 内容,我们可以使用以下命令下载 eaf:
git clone --depth=1 -b master https://github.com/emacs-eaf/emacs-application-framework.git ~/.emacs.d/site-lisp/emacs-application-framework/
当然在 windows 上没有 ~
目录,所以你在你的配置目录的某个子目录下执行即可,假设我的配置目录是 C:\Users\Y\yy-emacs
,那我就把 eaf 放在 C:\Users\Y\yy-emacs\local\eaf
里面。
# 然后在你想要放置 eaf 的当前目录下执行以下命令
git clone --depth=1 -b master https://github.com/emacs-eaf/emacs-application-framework.git
这样就得到了 eaf 包。
安装过程非常简单,直接运行 install-eaf.py
即可,安装时注意网络是否可用
在 eaf 目录执行以下命令:
python install-eaf.py
看到下面的结果说明安装成功了:
剩下的一些应用按自己需求安装
核心和应用安装完毕后大概是这个样子:
接下来的工作是给 emacs 添加 load-path 和 require,直接把刚才结果中得到的文本复制到配置文件中即可,记得把目录改成自己机器上的:
(add-to-list 'load-path "path/to/emacs-application-framework/")
(require 'eaf)
(require 'eaf-browser)
4.安装完成后的测试
首先,重启 emacs,然后 M-x
,观察能否找到 eaf:
没问题,接下来试一试浏览器:
好,非常成功地打不开,让我们看看 *eaf*
中的报错信息:
很显然我们没有安装 darkreader
,这里需要安装一下,首先来到 browser app 所在目录,即 path/to/eaf/app/browser
,然后使用 npm
安装 darkreader:
npm install darkreader
接着再次运行 eaf-open-browser 并观察结果:
又出错了,不过这一次我已经把 eaf-enable-debug
设为了 t
,让我们看看报错信息:
线程返回非零说明出现了问题,在我的环境中是能够正常使用 eaf-open-demo
的,那就应该是 eaf-browser
出了问题。下面我们做一些实验看看能不能定位错误:
当我们输入一个不能访问的网址时,eaf 是能够正确显示的,比如:
再拿一个纯文本网站试试:
5.使用 pyqt5 的 eaf 分支
重新下载 eaf,不过这次使用 qt5-legacy 分支:
git clone --depth=1 https://github.com/emacs-eaf/emacs-application-framework -b qt5-legacy
其他的操作同上面,然后应该就可以用了…然而并不。
6.总结
最后会出现如图所示的报错信息:
之后有时间了去学一下 eaf 和 pyqt,看能不能把原因找出来。
当然最简单还是 脱离 Windows 苦海
今晚回家就把电脑格式化了,直接转投arch
回复很 6
这eaf也太难搞了,我archlinux也搞不起来
一般都是代理没有配好导致中途安装失败。
现在windows 10上面的EAF Browser可以正常安装使用啦,我这个回贴就是在win10 上面的EAF browser回复的 。
安装过程就是使用官方的python安装脚本,然后就是这里大佬提到的npm 安装 darkreader。
建议使用官方编译的emacs29.1,使用下来更流畅,目前第三方编译的emacs30还是有点问题。
目前个人用EAF browser emacs上一边google,一边用org-mode做笔记,体验很棒!
唯一的不足就是有时候操作公司的ERP网页系统,用键盘操作网页上的按钮,不能成功执行,但用鼠标是可以按的。。。
可以写一个js脚本,快捷键定位到dom元素坐标,然后通过qt发送一个伪造的鼠标事件过去。
这样就可以解决要用鼠标的问题了。
不懂啊,特地花钱买vpn,挂梯子进入网站都好好的,git总是卡住,wsl 装成功了pdf,虚拟机archlinux装成功了浏览器 然后第二个软件总是卡住
所以还是代理没有配置好呀, git不行就装不了eaf.
感谢 include-yy分享!用这个流程 求一个Win10安装Emac及EAF-Browser的教程 - #9,来自 include-yy 试着安装了 eaf,把自己的遇到的问题及解决方法贴出来给同样的新手参考!
相同的地方就略过,主要写不同的地方,因为我是在 win10 下的 msys2 中安装的Emacs,出现的问题和直接在 win10中用 Emacs有些不同。
-
环境
- Windows 10
- Python 3.11.5
- msys2
-
mingw64 emacs29.1
-
node v18.17.1
npm 9.6.7。npm 在安装 Node.js 时会连带被安装,但有可能不是最新版本,需要 npm install npm@latest -g 升级到最新版本。
-
pip 23.3.1
-
git 2.42.0
-
- Windows 10
-
检查环境 略
-
安装依赖 略
-
安装 EAF
- 虽然 msys2中也安装了 python,但经实践 msys2中的 python存在问题。在运行脚本
./install-eaf.py
时会在 PyQt6处报错 error: --plat-name must be one of (‘win32’, ‘win-amd64’, ‘win-arm32’, ‘win-arm64’) 。 - 因此这步是在 powershell 中运行
install-eaf.py
脚本完成的,命令为:python install-eaf.py
, 顺利完成。- 安装 winpython 建议用 scoop 工具。
- 虽然 msys2中也安装了 python,但经实践 msys2中的 python存在问题。在运行脚本
-
测试
- pdf 能正常打开,个人感觉挺不错,(❁´◡`❁)。
- browser 这里出了问题,在装完 darkreader后,仍然无法使用 eaf-open-browser。提示的错误信息为:
" File “…\emacs\plugin\esFramework\emacs-application-framework\core\webengine.py”, line 768, in init_dark_mode_js self.dark_mode_js = open(os.path.join(os.path.dirname(module_path), “node_modules”, “darkreader”, “darkreader.js”)).read() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: ‘…/emacs/plugin/esFramework/emacs-application-framework/app/browser\node_modules\darkreader\darkreader.js’ "
顺利解决!安装 darkreader一定要注意必须在“path/to/eaf/app/browser”下执行
npm install darkreader
命令,路径不要搞错了!重新安装后,能在 GUI中正常打开百度,开心~
你是通过 npm 全局安装的 darkreader 吗,这里需要单独安装
额,这个问题没注意哎,我试试!
折腾了半天,又看了一遍你的教程,才发现原来是我一开始就搞错了 。
安装 darkreader 一定要 “首先来到 eaf browser app 所在目录,即 path/to/eaf/app/browser” 。
而我是在 path/to/eaf/ 下执行的 npm install darkreader
, 所以才有上面说的那个问题。
我这里尝试了一下,不用全局安装也行,可以打开 baidu。
@include-yy 再次表示感谢!
那看上去现在 Windows 上也能用上 eaf 了,找时间试试去
应该用 ./install-eaf.py 脚本来安装 EAF, 这样他会把 core 以及 app 的依赖自动进行安装的, 不用手动切换目录。
这里主要是因为在 win10下的 msys2中安装的 emacs,而 msys2里的 python有问题, 所以只能用 winpython 运行 install-eaf.py脚本,可能是这个缘故,导致需要手动安装 darkreader?
P.S.:大佬好哈 ,不得不说EAF真棒!感谢!!!