首页 > 解决方案 > 如何在 Django 中使用 pathlib.Path?

问题描述

我正在使用 pathlib.Path 作为 os.path 的替代品,并且我正在尝试将它用于 django 项目中的目录路径,但是我尝试创建迁移多少,就会发生错误:

"return database_name == ': memory:' or 'mode = memory' in database_name
TypeError: argument of type 'PosixPath' is not iterable "

我的基本目录:

BASE_DIR = Path(__file__).parent.parent.parent

数据库连接:

BASE_DIR.joinpath('db.sqlite3')

标签: pythondjango

解决方案


pathlib.Paths 不是字符串(或字节)。大多数内部 Django 代码都使用这些os.path函数,而这些函数需要字符串/字节,而需要字符串的代码(就像它看起来database_name所期望的那样)不能与pathlib.Path对象一起使用——您需要将其转换为字符串(即。str(BASE_DIR.joinpath('db.sqlite3')

可以编写一个作为 的子类的 Path 类str,这使得与期望字符串的代码的交互更加透明(许多人已经创建了这样的类,包括我:https ://github.com/datakortet/dkfileutils/blob/master/ dkfileutils/path.py)。


推荐阅读