与系统库同名python脚本文件引起的奇怪错误及其解决

与系统库同名python脚本文件引起的奇怪错误及其解决 在测试daft python模块的时候遇到一个奇怪错误。编写daft1.py文件importdaftfromdaftimportSession# create a sessionsessSession()# create temp tablessess.create_temp_table(T,daft.from_pydict({a:[0,1]}))sess.create_temp_table(S,daft.from_pydict({b:[1,0]}))# execute sqlsess.sql(SELECT * FROM T, S).show() ╭───────┬───────╮ │ a ┆ b │ │ --- ┆ --- │ │ Int64 ┆ Int64 │ ╞═══════╪═══════╡ │ 0 ┆ 1 │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ 1 ┆ 1 │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ 0 ┆ 0 │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ 1 ┆ 0 │ ╰───────┴───────╯ 执行报错root6ae32a5ffcde:/par# python3 pip.pyz install daft[sql] --break-system-packages Looking in indexes: https://mirrors.aliyun.com/pypi/simple Collecting daft[sql] Downloading https://mirrors.aliyun.com/pypi/packages/2f/2c/7663db73b74507c87a06f669d59286cd4889c3889b2beeff264346e9ec01/daft-0.7.4-cp310-abi3-manylinux_2_24_x86_64.whl (62.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.0/62.0 MB 21.3 MB/s eta 0:00:00 Requirement already satisfied: pyarrow24.0.0,8.0.0 in /usr/local/lib/python3.11/dist-packages (from daft[sql]) (21.0.0) Requirement already satisfied: fsspec2026.3.0 in /usr/local/lib/python3.11/dist-packages (from daft[sql]) (2025.10.0) Requirement already satisfied: tqdm4.68.0 in /usr/local/lib/python3.11/dist-packages (from daft[sql]) (4.67.1) Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from daft[sql]) (25.0) Collecting connectorx0.5.0,0.4.4 (from daft[sql]) Downloading https://mirrors.aliyun.com/pypi/packages/9a/37/d6dffc001562b7109c8a18604f5a52445187c6bede23e5b737248d172f15/connectorx-0.4.5-cp311-cp311-manylinux_2_28_x86_64.whl (43.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.8/43.8 MB 21.8 MB/s eta 0:00:00 Collecting sqlalchemy2.1.0 (from daft[sql]) Downloading https://mirrors.aliyun.com/pypi/packages/21/dd/3b7c53f1dbbf736fd27041aee68f8ac52226b610f914085b1652c2323442/sqlalchemy-2.0.48-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (3.3 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 20.6 MB/s eta 0:00:00 Collecting sqlglot28.11.0 (from daft[sql]) Downloading https://mirrors.aliyun.com/pypi/packages/55/ff/5a768b34202e1ee485737bfa167bd84592585aa40383f883a8e346d767cc/sqlglot-28.10.1-py3-none-any.whl (597 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 597.1/597.1 kB 13.3 MB/s eta 0:00:00 Collecting greenlet1 (from sqlalchemy2.1.0-daft[sql]) Downloading https://mirrors.aliyun.com/pypi/packages/72/83/3e06a52aca8128bdd4dcd67e932b809e76a96ab8c232a8b025b2850264c5/greenlet-3.3.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (594 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 594.2/594.2 kB 11.9 MB/s eta 0:00:00 Requirement already satisfied: typing-extensions4.6.0 in /usr/local/lib/python3.11/dist-packages (from sqlalchemy2.1.0-daft[sql]) (4.15.0) Installing collected packages: sqlglot, greenlet, daft, connectorx, sqlalchemy Successfully installed connectorx-0.4.5 daft-0.7.4 greenlet-3.3.2 sqlalchemy-2.0.48 sqlglot-28.10.1 WARNING: Running pip as the root user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning. root6ae32a5ffcde:/par# python3 daft1.py Traceback (most recent call last): File /par/daft1.py, line 1, in module import daft File /usr/local/lib/python3.11/dist-packages/daft/__init__.py, line 58, in module from daft.catalog import ( File /usr/local/lib/python3.11/dist-packages/daft/catalog/__init__.py, line 48, in module from daft.dataframe import DataFrame File /usr/local/lib/python3.11/dist-packages/daft/dataframe/__init__.py, line 3, in module from .dataframe import DataFrame, GroupedDataFrame File /usr/local/lib/python3.11/dist-packages/daft/dataframe/dataframe.py, line 36, in module from daft.execution.native_executor import NativeExecutor File /usr/local/lib/python3.11/dist-packages/daft/execution/native_executor.py, line 16, in module from daft.event_loop import get_or_init_event_loop File /usr/local/lib/python3.11/dist-packages/daft/event_loop.py, line 3, in module import asyncio File /usr/lib/python3.11/asyncio/__init__.py, line 16, in module from .queues import * File /usr/lib/python3.11/asyncio/queues.py, line 218, in module class PriorityQueue(Queue): File /usr/lib/python3.11/asyncio/queues.py, line 227, in PriorityQueue def _put(self, item, heappushheapq.heappush): ^^^^^^^^^^^^^^ AttributeError: module heapq has no attribute heappush root6ae32a5ffcde:/par#python3 --version Python 3.11.2heapq是个系统模块怎么会缺少属性我认为是daft的bug, 还到它的github存储库去提issue。今天执行另外一个python脚本出现同样的错误这就和daft无关了在当前目录搜索发现我自己的一个脚本名为heapq.py它引用了系统heapq。结果python在执行的时候以为它是我的heapq模块源文件当然找不到heappush属性。知道了错因解决很简单把自己的脚本改名改为一个不和系统模块重名的就好了。现在执行结果如下root6ae32a5ffcde:/par# python3 daft1.py ╭───────┬───────╮ │ a ┆ b │ │ --- ┆ --- │ │ Int64 ┆ Int64 │ ╞═══════╪═══════╡ │ 0 ┆ 1 │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ 1 ┆ 1 │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ 0 ┆ 0 │ ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤ │ 1 ┆ 0 │ ╰───────┴───────╯