我的 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
我一整天都遇到同样的问题。终于弄清楚是什么解决了我的问题。不知何故 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
实际上,我在我正在使用的文件夹中添加了一个名为
secrets.py
的文件,这导致了问题。重命名文件后问题就消失了。
重命名任何名为“secrets.py”或“secrets”的文件或包。
例如,这个项目就存在问题。
project/
|-- main.py
|-- secrets/
|-- __init__.py
|-- random_name.py
虽然这不是
project/
|-- main.py
|-- secret_files/
|-- __init__.py
|-- random_name.py
当我从 Secrets.py 重命名为 mysecrets.py 时工作
这发生在我身上,因为我创建了一个名为 Secrets.py 的文件,我什至没有使用它或将其导入到任何地方,它只是包含一个我尚未使用的 api 密钥。
但是它引起了与您相同的错误,我将其重命名为“the_secrets.py”,现在它可以工作了。
疯狂
您只需将该行
SOME_API='abcdefg'
添加到 Secrets.py 源文件中,一切都会正常工作。
它一直在工作,直到尝试从SSIS调用脚本,在将我的secrets.py更改为其他内容后,它对我有用。
因此将项目中的 secrets.py 更改为 credentials_prod.py
提示: 一般不要对文件、函数和包使用任何通用名称