【问题标题】:Permission denied in colabcolab中的权限被拒绝
【发布时间】:2021-10-19 17:04:45
【问题描述】:

我想在我的 colab 笔记本中使用 stockfish。 我第一次尝试使用chess.engine.SimpleEngine.popen_uci() 命令,它似乎已经过时了,因为module 'chess.engine' has no attribute 'SimpleEngine'

所以我尝试了鱼本身:

from stockfish import Stockfish

stockfish = Stockfish('/usr/local/lib/python3.7/dist-packages/stockfish')

在这里我总是得到错误:

权限被拒绝:'/usr/local/lib/python3.7/dist-packages/stockfish'

我用谷歌搜索了它并想出了一些很好的尝试:

我尝试使用 !chmod +x '/usr/local/lib/python3.7/dist-packages/stockfish' 编译,但没有解决问题,!chmod +x 'stockfish' 没有找到文件夹。

那么我究竟如何授予使用stockfish 文件夹的权限?

【问题讨论】:

  • 您的 Stockfish 路径必须是可执行文件,而不是包。
  • 如果文件夹中有__main__.py,可以使用python命令运行:python3 /usr/local/lib/python3.7/dist-packages/stockfish。没有其他方法可以运行 python 模块文件夹(据我所知)。您确定您的设备上没有安装普通的旧 stockfish 吗?如果是,您可以使用stockfish 命令从终端运行stockfish 引擎。通常这些国际象棋引擎在/usr/share/games 中有可执行文件。

标签: permissions stockfish


【解决方案1】:

您需要将 os.setuid 设置为 0,如下面的代码:

! wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz -q
! tar -xzf elasticsearch-7.9.2-linux-x86_64.tar.gz
! chown -R daemon:daemon elasticsearch-7.9.2

import os
from subprocess import Popen, PIPE, STDOUT
es_server = Popen(['elasticsearch-7.9.2/bin/elasticsearch'],
                   stdout=PIPE, stderr=STDOUT,
                   preexec_fn=lambda: os.setuid(0)  # as daemon
                  )
# wait until ES has started
! sleep 30

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-11
    • 2015-08-30
    • 1970-01-01
    • 2018-07-19
    • 2020-04-09
    • 2014-05-05
    相关资源
    最近更新 更多