This would happen if stdout isn't a terminal (e,g,, redirecting to a file or run as a subprocess and its a pipe). There are different terminal types, like physical terminal attached via a serial line, that may not accept that ioctl. But if this is a linux machine and its default terminal emulator, it should work. Just guesses here. – tdelaney Aug 10 '20 at 18:26
https://stackoverflow.com/questions/63345739/ioerror-errno-25-inappropriate-ioctl-for-device
错误日志(重点就这一句,样子大概不是这样,前面还会跟个BaiduPCS-Py的版本号,但我剪贴板里面被覆盖掉了,反正就是有这一行句子):
[Errno 25] Inappropriate ioctl for device
这个问题已经解决了,我发这个issue,只是记录一下,方便后来者解决,如果需要利用BaiduPCS-Py进行Borg备份同步时,在Vorta中怎么也无法同步成功,而在终端里面却可以的问题。
这其实是个通病,用这里的话说,就是BaiduPCS-Py只能在一个终端里面运行,在其他地方是无法运行的(如Vorta的子进程下)。我的实测也是这样的。但是隔壁Rclone却可以运行,所以不知道是软件本身的问题(包括Vorta,不知道Rclone是怎么处理这种情况的),还是语言/库本身的问题。
目前的解决方法就是在一个终端里面跑BaiduPCS-Py,比如我是在BaiduPCS-Py命令前面加了个Kitty命令(
kitty BaiduPCS-Py sync /xxx /xxx
)。这个命令会让BaiduPCS-Py在Kitty这个终端里面运行。这样就可以执行成功了。当然你可以换其他的终端。反正是个 终端就行。系统环境