8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

由于 Python 3.12.3,无法启动 cqlsh,出现“ModuleNotFoundError:没有名为‘six.moves’的模块”

Eric Camescasse 2月前

54 0

虚拟机和 docker 对我的应用程序来说并不实用,因为我需要能够定期在本地保存 Cassandra 数据库(增量备份是正确的)有没有人有工作......

虚拟机和 docker 对我的应用程序来说不实用,因为我需要能够定期在本地保存 Cassandra 数据库(增量备份才是真正的)

当 Ubuntu 内核安装了 3.12 时,是否有人有降级到 Python 3.11 的解决方法?当我尝试降级时(即使我尝试完全卸载),有几个未满足的依赖项,因此我尝试执行快速而肮脏的 sudo ln -sf /usr/bin/python3.9 /usr/bin/python3(我也尝试使用 usr/bin/python3.11 /usr/bin/python3),但在尝试启动 cqlsh 时仅收到 \'未找到合适的 Python 解释器。\' 错误。

到目前为止,似乎唯一的选择是完全重新安装内核,并在重新安装 Cassandra 之前以某种方式指定 Python 3.11。这将非常繁琐,尤其是如果它不能保证 Cassandra 将在本地运行。还有其他解决方法吗?

$:/apache-cassandra-4.1.5$ sudo ls /usr/bin/python*
 /usr/bin/python3  /usr/bin/python3.12
$:/apache-cassandra-4.1.5$ sudo ln -sf /usr/bin/python3.9 /usr/bin/python3
$:/apache-cassandra-4.1.5$ sudo bin/cqlsh
No appropriate Python interpreter found.
$:/apache-cassandra-4.1.5$ sudo ln -sf /usr/bin/python3.11 /usr/bin/python3
$:/apache-cassandra-4.1.5$ sudo bin/cqlsh
No appropriate Python interpreter found.
$:/apache-cassandra-4.1.5$ sudo ln -sf /usr/bin/python3.12 /usr/bin/python3
$:/apache-cassandra-4.1.5$ sudo bin/cqlsh
Traceback (most recent call last):
  File "/apache-cassandra-4.1.5/bin/cqlsh.py", line 134, in <module>
from cassandra.cluster import Cluster
  File "/apache-cassandra-4.1.5/bin/../lib/cassandra-driver-internal-only-3.25.0.zip/cassandra-driver-3.25.0/cassandra/cluster.py", line 33, in <module>
ModuleNotFoundError: No module named 'six.moves'
帖子版权声明 1、本帖标题:由于 Python 3.12.3,无法启动 cqlsh,出现“ModuleNotFoundError:没有名为‘six.moves’的模块”
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Eric Camescasse在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • six.moves 显然与 Python 版本控制有关。如果您坚持认为 Cassandra 只能通过 VM 或 Docker 运行,Apache 文档中哪里提到了这一点?我在这里阅读了其他几个已回答的问题,其中人们遇到了同样的问题,我尝试了他们所有的建议,包括使用 aptitude 而不是 apt-get 来尝试寻找解决方案。

  • 这是 Python 3.12 的一个已知问题,会影响很多软件。Python 似乎在小补丁版本中引入了重大更改,Apache Cassandra 只是其中一个受影响的软件。

    six 模块提供了一个兼容层,允许代码同时适用于 Python 2 和 Python 3,但似乎在 Python 3.12 中出现了问题。如果你在网上粗略搜索一下,就会发现很多其他软件遇到相同问题的报告。

    在安装了 Python 3.11 的 virtualenv virtualenv

    对于任何感兴趣的人,Cassandra 项目正在 CASSANDRA-19206 。干杯!

  • 我希望有人能给我指明正确的方向。我正在尝试修改 ubuntu 10.10 发行版,隐藏整个桌面,这样用户启动后看到的就只是纯色……

    我希望有人能给我指明正确的方向。

    我正在尝试修改 ubuntu 10.10 发行版,隐藏整个桌面,这样用户启动后看到的就只是纯色。这样做的原因是,我目前正在编写一个 glade 应用程序管理器,它将是用户与操作系统的唯一界面,并将位于此背景的顶部。我想我正在寻找一种创建信息亭发行版的方法。我找了找,没有找到真正好的教程。我过去真的很少接触 Linux,所以如果有人能给我一些建议/想法,那将是一个真正的帮助。

    提前欢呼

    克里斯

  • 看来你还没有准备好承担如此巨大的项目……

    无论如何,据我所知,Ubuntu 带有 KDE 或 GNOME 桌面环境。所以如果你不需要它,就不要启动它。只需使用纯色背景启动 X11。启动 KDE 或 GNOME 并隐藏除纯色背景之外的所有内容确实没有意义。

    这就像‘我想要一个座位,然后买一架巨型喷气式飞机,然后把所有东西都去掉,只留下一个座位’。

  • 在 Ubuntu 22 上,使用 Python 3.10,我需要设置 VPN 连接并分析来自 VPN 服务器的响应。我这样做如下:connect_command = ['ip', 'netns', 'exec', 'vpn_test_namespace', '

    在 Ubuntu 22 上,使用 Python 3.10,我需要建立 VPN 连接并分析来自 VPN 服务器的响应。我按如下方式执行此操作:

    connect_command = ['ip', 'netns', 'exec', 'vpn_test_namespace', 'ipsec', 'up', 'vpn_test_config']
    connect_process = subprocess.Popen(connect_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    connect_output, connect_error = connect_process.communicate()
    

    但是,该过程不会等待完成,并且communicate()会立即执行。因此,connect_output和connect_error为空。如果我添加一个暂停:

    connect_command = ['ip', 'netns', 'exec', 'vpn_test_namespace', 'ipsec', 'up', 'vpn_test_config']
    connect_process = subprocess.Popen(connect_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    time.sleep(3)
    connect_output, connect_error = connect_process.communicate()
    

    或者使用断点等待,然后一切正常,我可以看到结果。我做错了什么?

    我尝试了 StackOverflow 或 Google 上推荐的各种方法,例如 call()、check_call()、wait()、run(),但无法达到让脚本等待进程完成的预期结果。

  • 谢谢,谢谢你的建议,但不要讽刺我。我正在做一些我职业生涯中以前不需要做的事情,所以我来这里向比我更了解这个话题的人请教。如果没有人问,就没有人会学到东西。

  • ip netns 创建了一个用于隔离网络流量的虚拟环境,该环境称为网络命名空间。因此,在本例中,命令“ip netns exec vpn_test_namespace ipsec up vpn_test_config”仅表示应在名为“vpn_test_namespace”的特定命名空间中启用 VPN。

  • 问题更像是,它是否会产生一个单独的子进程,然后让父进程在子进程发出任何输出之前死亡,或者类似的恶作剧?

  • 可能是这样的,也许正在创建另一个子进程。但如果是这样,我该如何等待所有进程(包括所有子进程)完成?因为如果我在终端中手动执行命令,我会清楚地看到输入行尚未可用,因为命令尚未完成。为什么我不能使用 Python 代码确定这一点?

返回
作者最近主题: