D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Scripts\python.exe D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\manage.py runserver 8000 D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\common\const.py:1590: SyntaxWarning: invalid escape sequence '\.' OTHDER_SUB_CHANNEL_REGEX = "^[0-9a-zA-z\.]+::other$" Traceback (most recent call last): File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\manage.py", line 21, in <module> main() File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\manage.py", line 17, in main execute_from_command_line(sys.argv) File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line utility.execute() File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\django\core\management\__init__.py", line 325, in execute settings.INSTALLED_APPS File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\django\conf\__init__.py", line 57, in __getattr__ self._setup(name) File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\django\conf\__init__.py", line 44, in _setup self._wrapped = Settings(settings_module) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\django\conf\__init__.py", line 107, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\ProgramData\miniconda3\Lib\importlib\__init__.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1387, in _gcd_import File "<frozen importlib._bootstrap>", line 1360, in _find_and_load File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 935, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 995, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\base\settings.py", line 243, in <module> from common.const import get_env, RunEnv File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\common\__init__.py", line 3, in <module> from core.dto import TrackParams File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\core\dto.py", line 273, in <module> class QueryPayinResultDto(BaseModel): File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\pydantic\main.py", line 190, in __new__ fields[ann_name] = ModelField.infer( ^^^^^^^^^^^^^^^^^ File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\pydantic\fields.py", line 269, in infer return cls( ^^^^ File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\pydantic\fields.py", line 241, in __init__ self.prepare() File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\pydantic\fields.py", line 316, in prepare self._type_analysis() File "D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\.venv1\Lib\site-packages\pydantic\fields.py", line 409, in _type_analysis self.key_field = self._create_sub_type(self.type_.__args__[0], 'key_' + self.name, for_keys=True) ^^^^^^^^^^^^^^^^^^^ File "C:\ProgramData\miniconda3\Lib\typing.py", line 1204, in __getattr__ raise AttributeError(attr) AttributeError: __args__. Did you mean: '__ror__'? 进程已结束,退出代码为 1
时间: 2025-03-23 15:12:22 浏览: 29
从错误信息来看,您尝试运行 Django 项目时遇到了一个问题。以下是逐步分析及解决建议:
### 错误原因
1. **SyntaxWarning**:
```plaintext
D:\aaCode\ddcode\taiyu_go_qipai\Server\tha_de\src\portal\common\const.py:1590: SyntaxWarning: invalid escape sequence '\.'
OTHDER_SUB_CHANNEL_REGEX = "^[0-9a-zA-z\.]+::other$"
```
- 这里的正则表达式 `OTHDER_SUB_CHANNEL_REGEX` 使用了无效的转义字符 `\.`。
- 在 Python 中,`\.` 应直接写作 `.` 或者使用原始字符串(如 `r"..."`),否则会触发警告。
2. **AttributeError**:
```plaintext
AttributeError: __args__. Did you mean: '__ror__'?
```
- 此问题出现在 Pydantic 的字段解析过程中。
- 具体原因是某些地方的类型注解存在问题,可能是由于版本兼容性或语法不正确导致。
---
### 解决方案
#### 1. 修改正则表达式的定义
将 `common/const.py` 文件第 1590 行修改为:
```python
OTHDER_SUB_CHANNEL_REGEX = r"^[0-9a-zA-Z.]+::other$" # 去掉多余的反斜杠
```
注意:`a-zA-z` 写法有潜在风险(大小写字母范围不对齐)。更安全的方式是分开写成 `[a-zA-Z]`。
#### 2. 检查 Pydantic 类型注解
在 `core/dto.py` 文件中找到 `QueryPayinResultDto` 定义,并检查其字段声明是否正确。例如:
```python
class QueryPayinResultDto(BaseModel):
some_field: Dict[str, int] # 确保字典键值对类型的书写准确无误
```
如果涉及嵌套结构,请确认所有嵌套模型都已正确导入并初始化。
#### 3. 验证依赖库版本
此问题是因 Pydantic 和 typing 模块之间的交互引发的。请确保您的环境满足以下条件之一:
- 如果使用的是 Pydantic v1.x,则需要保持较低版本的 Python (`<3.10`);
- 若升级到 Pydantic v2.x,请同步更新其他依赖项。
可以运行以下命令验证当前版本:
```bash
pip show pydantic python-version
```
必要时冻结需求文件(`requirements.txt`)以锁定特定组合。
---
### 测试修复后的程序
完成上述更改后再次启动服务:
```bash
python manage.py runserver 8000
```
若仍报错,请逐一排查日志提示的具体位置直至完全清除异常状态为止!
---
阅读全文
相关推荐








