from pyowm.owm import OWM
owm_obj = OWM('токен')
reg = owm_obj.city_id_registry()
list_of_tuples = reg.ids_for('London', matching='like')
print(list_of_tuples)
使用pyowm创建天气应用程序时,出现错误:
Traceback (most recent call last):
File "G:\PROJECT2\1.21 Lesson_21.py", line 342, in <module>
reg = owm_obj.city_id_registry()
File "G:\PROJECT2\venv\lib\site-packages\pyowm\owm.py", line 96, in city_id_registry
return cityidregistry.CityIDRegistry.get_instance()
File "G:\PROJECT2\venv\lib\site-packages\pyowm\commons\cityidregistry.py", line 29, in get_instance
return CityIDRegistry(CITY_ID_DB_PATH)
File "G:\PROJECT2\venv\lib\site-packages\pyowm\commons\cityidregistry.py", line 21, in __init__
self.connection = self.__decompress_db_to_memory(sqlite_db_path)
File "G:\PROJECT2\venv\lib\site-packages\pyowm\commons\cityidregistry.py", line 52, in __decompress_db_to_memory
src_conn = sqlite3.connect(tmpf_name)
sqlite3.OperationalError: unable to open database file
这部分代码取自 pyowm 上 2023 年的文档顺便说一句,没有执行任何任务,而是出现相同的错误。此代码适用于数据库,即 reg = owm_obj.city_id_registry()。数据库文件-city.db.bz2。
一般来说,我重现了错误。
系统
Windows 11 engPython 3.11.4 и Python 3.10.11venv/Lib/site-packages/pyowm/commons/cityidregistry.py在这个文件里有这段代码
如果你改变它:
这一切都有效。
当然,你需要寻找的原因是拐杖,仅此而已。但作为一个临时补丁(更新库时很可能会消失)就可以了。