2022-02-10 AttributeError: module __main__ has no attribute __file__

在打一个 python 软件包时出现了问题。

1
python -m build

产生了如下错误。

1
finding specification module for pip AttributerError: module '__main__' has no attribute '__file__'

在 google 下面搜寻后得到的答案是因为 setuptools 的版本问题,才会导致该错误的。 但对于我的情况确不是这样。在一次不经意间, 在 python 交互式中运行了 import pip 出现了错误, 错误消息如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> import pip
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1002, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 945, in _find_spec
File "/home/archlinux/.local/lib/python3.10/site-packages/_distutils_hack/__init__.py", line 83, in find_spec
return method()
File "/home/archlinux/.local/lib/python3.10/site-packages/_distutils_hack/__init__.py", line 119, in spec_for_pip
if self.is_get_pip():
File "/home/archlinux/.local/lib/python3.10/site-packages/_distutils_hack/__init__.py", line 141, in is_get_pip
return os.path.basename(__main__.__file__) == 'get-pip.py'
AttributeError: module '__main__' has no attribute '__file__'. Did you mean: '__name__'?

从中发现了更多的信息, 信息中得知 pip 引用了不正确的 python 包, 如 _distutils_hack, 因此估计是这个包的问题, 我尝试进入 /home/archlinux/.local/lib/python3.10/site-packages 后直接删除了该目录下所有软件包。(这个文件夹,我只有两个文件夹,一个文件。 我能确定这个文嘉夹中出现的包均不是我自己需要的,所以我直接删除了。)

再次进入 python , 输入 import pip ,没有任何错误消息, 天下太平。

在尝试打包, python -m build 没有出现任何问题。 成功解决。


2022-02-10 AttributeError: module __main__ has no attribute __file__
https://www.supermew.top/2022/02/10/AttributeError-module-main-has-no-attribute-file/
作者
八月
发布于
2022年2月10日
许可协议