“ImportError:无法导入名称 randbits”是什么意思?

问题描述 投票:0回答:7

我的 jupyter 笔记本的第一个单元格包含我要导入的库。由于某种原因,当我运行它时,会收到

ImportError: cannot import name randbits
。我以前从未见过此导入错误,并且已经尝试重新启动内核并确认所有库均已正确安装。有人以前见过这个并且知道如何处理这个错误吗?

import numpy as np
import pandas as pd
import requests
import xlsxwriter 
import math

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Input In [1], in <cell line: 1>()
----> 1 import numpy as np
      2 import pandas as pd
      3 import requests

File C:\pyver\py3.10.5\lib\site-packages\numpy\__init__.py:151, in <module>
    149 from . import fft
    150 from . import polynomial
--> 151 from . import random
    152 from . import ctypeslib
    153 from . import ma

File C:\pyver\py3.10.5\lib\site-packages\numpy\random\__init__.py:180, in <module>
    126 __all__ = [
    127     'beta',
    128     'binomial',
   (...)
    176     'zipf',
    177 ]
    179 # add these for module-freeze analysis (like PyInstaller)
--> 180 from . import _pickle
    181 from . import _common
    182 from . import _bounded_integers

File C:\pyver\py3.10.5\lib\site-packages\numpy\random\_pickle.py:1, in <module>
----> 1 from .mtrand import RandomState
      2 from ._philox import Philox
      3 from ._pcg64 import PCG64, PCG64DXSM

File mtrand.pyx:1, in init numpy.random.mtrand()

File bit_generator.pyx:38, in init numpy.random.bit_generator()

ImportError: cannot import name randbits
python python-3.x numpy import importerror
7个回答
61
投票

我一整天都遇到同样的问题。终于弄清楚是什么解决了我的问题。不知何故 anaconda3/Lib/secrets.py 被覆盖。 Numpy 依赖于该目录中名为 random.py 和 Secrets.py 的文件,因此如果您有具有这些名称的文件,numpy 将不会加载。

  • 我重命名了不正确的 Secrets.py 文件

  • 找到secrets.py源代码并重新创建该文件。解决了我的问题。

下面的链接对我最有益:

对 numpy 有类似问题的人: https://github.com/numpy/numpy/issues/14860

secrets.py的源代码: https://github.com/python/cpython/blob/3.7/Lib/secrets.py


10
投票

实际上,我在我正在使用的文件夹中添加了一个名为

secrets.py
的文件,这导致了问题。重命名文件后问题就消失了。


3
投票

重命名任何名为“secrets.py”或“secrets”的文件或包。

例如,这个项目就存在问题。

project/
|-- main.py
|-- secrets/
    |-- __init__.py
    |-- random_name.py

虽然这不是

project/
|-- main.py
|-- secret_files/
    |-- __init__.py
    |-- random_name.py

1
投票

当我从 Secrets.py 重命名为 mysecrets.py 时工作


1
投票

这发生在我身上,因为我创建了一个名为 Secrets.py 的文件,我什至没有使用它或将其导入到任何地方,它只是包含一个我尚未使用的 api 密钥。

但是它引起了与您相同的错误,我将其重命名为“the_secrets.py”,现在它可以工作了。

疯狂


0
投票

您只需将该行

SOME_API='abcdefg'
添加到 Secrets.py 源文件中,一切都会正常工作。


0
投票

它一直在工作,直到尝试从SSIS调用脚本,在将我的secrets.py更改为其他内容后,它对我有用。

因此将项目中的 secrets.py 更改为 credentials_prod.py

提示: 一般不要对文件、函数和包使用任何通用名称

© www.soinside.com 2019 - 2024. All rights reserved.