有一次,我看到一则关于如何用 Python 使 AI 生成自己的冒险游戏的广告,所以我去了 YouTube 并查看了视频。尽管视频已经过时,但我还是很好地遵循了它。但是当我尝试运行从here下载的一组Python代码时,特别是
from cassandra.cluster import Cluster
我收到一个错误:
Traceback (most recent call last):
File "C:\Users\xxxxx\Desktop\My_Database\tutorial.py", line 1, in <module>
from cassandra.cluster import Cluster
File "cassandra\cluster.py", line 173, in init cassandra.cluster
cassandra.DependencyException: Unable to load a default connection class
The following exceptions were observed:
- The C extension needed to use libev was not found. This probably means that you didn't have the required build dependencies when installing the driver. See http://datastax.github.io/python-driver/installation.html#c-extensions for instructions on installing build dependencies and building the C extension.
- Unable to import asyncore module. Note that this module has been removed in Python 3.12 so when using the driver with this version (or anything newer) you will need to use one of the other event loop implementations.
尽管我搜索了问题并发现了很多类似的问题已解决,但没有一个对我有用,所以我来到这里希望有人解决我的问题。
当我运行代码时,我希望它会像视频所示的那样工作,但事实并非如此。尽管我搜索了问题并发现了很多类似的问题已解决,但它们都不起作用我,所以我来到这里希望有人解决我的问题。
这真的很奇怪。运行时应注意这些依赖关系
pip3 install cassandra-driver
。
我很想知道两者的输出:
python3 --version
和
python3 -c 'import cassandra; print (cassandra.__version__)'
理论上,最后一个命令应该调用您报告的相同错误。但在视频中,Tim 运行在 Python 3.9.6 上,我在 3.9.6 和 3.12.1 上都测试了它。我会确保你至少使用 3.9.6。
您可能想查看Python 驱动程序上的 DataStax 文档,尤其是有关 C 扩展的部分。那里可能有一些东西可以解决这个问题。
否则,我创建了一个更简单的版本
connect_database.py
(来自上面提到的文档)。只要正确设置 ASTRA_TOKEN
和 ASTRA_SCB
的环境变量,它就可以工作。
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from os import path, environ
import json
ASTRA_DB_APPLICATION_TOKEN = environ.get("ASTRA_TOKEN")
ASTRA_DB_SECURE_BUNDLE_PATH = environ.get("ASTRA_SCB")
cluster = Cluster(
cloud={
"secure_connect_bundle": ASTRA_DB_SECURE_BUNDLE_PATH,
},
auth_provider=PlainTextAuthProvider(
"token",
ASTRA_DB_APPLICATION_TOKEN,
),
)
session = cluster.connect()
row = session.execute("select release_version from system.local").one()
if row:
print(row[0])
else:
print("An error occurred.")
连接到 Astra DB 时,输出应如下所示:
» python3 connect_database.py
4.0.11-df8e587a0e77