ModuleNotFoundError: No module named 'pandas._libs.interval'
ModuleNotFoundError: No module named 'pandas._libs.interval'
突然,我无法在 python 中导入 pandas。我正在使用anaconda作为包管理器,但似乎无论我卸载和安装多少次pandas,我仍然得到相同的错误:
(base) C:\>conda install pandas
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: C:\Users\au207178\Anaconda3
added / updated specs:
- pandas
The following NEW packages will be INSTALLED:
blas pkgs/main/win-64::blas-1.0-mkl
bottleneck pkgs/main/win-64::bottleneck-1.3.2-py38h2a96729_1
intel-openmp pkgs/main/win-64::intel-openmp-2021.4.0-haa95532_3556
mkl pkgs/main/win-64::mkl-2021.4.0-haa95532_640
mkl-service pkgs/main/win-64::mkl-service-2.4.0-py38h2bbff1b_0
mkl_fft pkgs/main/win-64::mkl_fft-1.3.1-py38h277e83a_0
mkl_random pkgs/main/win-64::mkl_random-1.2.2-py38hf11a4ad_0
numexpr pkgs/main/win-64::numexpr-2.8.1-py38hb80d3ca_0
numpy pkgs/main/win-64::numpy-1.21.2-py38hfca59bb_0
numpy-base pkgs/main/win-64::numpy-base-1.21.2-py38h0829f74_0
pandas pkgs/main/win-64::pandas-1.3.5-py38h6214cd6_0
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) C:\>python
Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\__init__.py", line 22, in <module>
from pandas.compat import (
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\compat\__init__.py", line 15, in <module>
from pandas.compat.numpy import (
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\compat\numpy\__init__.py", line 7, in <module>
from pandas.util.version import Version
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\util\__init__.py", line 1, in <module>
from pandas.util._decorators import ( # noqa
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\util\_decorators.py", line 14, in <module>
from pandas._libs.properties import cache_readonly # noqa
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\_libs\__init__.py", line 13, in <module>
from pandas._libs.interval import Interval
ModuleNotFoundError: No module named 'pandas._libs.interval'
我也试过了运行'conda update conda'.
接下来要做什么?
更新:
我检查了一下,文件肯定在“C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas_libs\interval.pyx”中。
但是,我注意到该库的部分路径显示 'python310'。但是,我的 python 版本是 3.8.8。尝试导入 pandas._libs.interval 时,python 是否有可能以某种方式查找错误的位置?我已经尝试了 python 3.10(甚至无法安装 pandas)和 python 3.9.7(无效)。
我也试过conda install --revision 0,也没有效果...
是的,它似乎正在从 user-level 安装中加载 pandas
。 User-level 安装可能会泄漏到 Conda 环境中并导致不可预测的行为,例如您所看到的。
我知道有两种作用途径。您可能想先尝试第二个,这将确认原因。但是,第一个选项在未来可能更易于管理,因为一旦完成,问题就应该得到解决。
选项 1:删除外部 Python(s)
如果您希望 Conda 简单地按预期工作,请卸载 user-level Python。请注意,检测到的 (Python 3.10) 可能不是唯一的,因此您可能需要追踪多个副本。我不在Windows,所以我不能建议具体的卸载步骤。
但是,您可能已经将此 user-level Python 用于其他项目,因此此选项可能不可行。
选项 2:使用隔离标志启动 Python
Python 提供了一些相关的标志,可以忽略可能导致其他 site-packages
泄漏的各种来源。以下是三个重要的:
$ python --help
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
...
-E : ignore PYTHON* environment variables (such as PYTHONPATH)
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-S : don't imply 'import site' on initialization
...
单独或一起尝试,看看是否可以解决问题。单独地,您可以缩小它是由于 PYTHONPATH
(单独 -E
会修复)还是通用 user-level 搜索(单独 -s
会修复)。
其他想法
我发现 Python 3.10 安装泄漏到 Python 3.8 解释器 运行 中很奇怪。通常,site
模块只加载匹配的主要+次要版本(例如,3.8 应该只选择另一个 3.8)。这可能表明正在发生其他事情。也许设置了 PYTHONPATH
环境? (真的不应该。)
一般来说,我不推荐使用base环境进行工作。这从未在 Anaconda 文档中记录,但许多 long-term Conda 用户通常在他们的 base 中断或 get 包过载之后才发现这是一个痛苦的事实他们升级 conda 包的时间过长。相反,创建一个新环境并默认激活它而不是 base.
突然,我无法在 python 中导入 pandas。我正在使用anaconda作为包管理器,但似乎无论我卸载和安装多少次pandas,我仍然得到相同的错误:
(base) C:\>conda install pandas
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: C:\Users\au207178\Anaconda3
added / updated specs:
- pandas
The following NEW packages will be INSTALLED:
blas pkgs/main/win-64::blas-1.0-mkl
bottleneck pkgs/main/win-64::bottleneck-1.3.2-py38h2a96729_1
intel-openmp pkgs/main/win-64::intel-openmp-2021.4.0-haa95532_3556
mkl pkgs/main/win-64::mkl-2021.4.0-haa95532_640
mkl-service pkgs/main/win-64::mkl-service-2.4.0-py38h2bbff1b_0
mkl_fft pkgs/main/win-64::mkl_fft-1.3.1-py38h277e83a_0
mkl_random pkgs/main/win-64::mkl_random-1.2.2-py38hf11a4ad_0
numexpr pkgs/main/win-64::numexpr-2.8.1-py38hb80d3ca_0
numpy pkgs/main/win-64::numpy-1.21.2-py38hfca59bb_0
numpy-base pkgs/main/win-64::numpy-base-1.21.2-py38h0829f74_0
pandas pkgs/main/win-64::pandas-1.3.5-py38h6214cd6_0
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(base) C:\>python
Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\__init__.py", line 22, in <module>
from pandas.compat import (
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\compat\__init__.py", line 15, in <module>
from pandas.compat.numpy import (
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\compat\numpy\__init__.py", line 7, in <module>
from pandas.util.version import Version
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\util\__init__.py", line 1, in <module>
from pandas.util._decorators import ( # noqa
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\util\_decorators.py", line 14, in <module>
from pandas._libs.properties import cache_readonly # noqa
File "C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas\_libs\__init__.py", line 13, in <module>
from pandas._libs.interval import Interval
ModuleNotFoundError: No module named 'pandas._libs.interval'
我也试过了运行'conda update conda'.
接下来要做什么?
更新:
我检查了一下,文件肯定在“C:\Users\au207178\AppData\Roaming\Python\Python310\site-packages\pandas_libs\interval.pyx”中。
但是,我注意到该库的部分路径显示 'python310'。但是,我的 python 版本是 3.8.8。尝试导入 pandas._libs.interval 时,python 是否有可能以某种方式查找错误的位置?我已经尝试了 python 3.10(甚至无法安装 pandas)和 python 3.9.7(无效)。
我也试过conda install --revision 0,也没有效果...
是的,它似乎正在从 user-level 安装中加载 pandas
。 User-level 安装可能会泄漏到 Conda 环境中并导致不可预测的行为,例如您所看到的。
我知道有两种作用途径。您可能想先尝试第二个,这将确认原因。但是,第一个选项在未来可能更易于管理,因为一旦完成,问题就应该得到解决。
选项 1:删除外部 Python(s)
如果您希望 Conda 简单地按预期工作,请卸载 user-level Python。请注意,检测到的 (Python 3.10) 可能不是唯一的,因此您可能需要追踪多个副本。我不在Windows,所以我不能建议具体的卸载步骤。
但是,您可能已经将此 user-level Python 用于其他项目,因此此选项可能不可行。
选项 2:使用隔离标志启动 Python
Python 提供了一些相关的标志,可以忽略可能导致其他 site-packages
泄漏的各种来源。以下是三个重要的:
$ python --help
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
...
-E : ignore PYTHON* environment variables (such as PYTHONPATH)
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-S : don't imply 'import site' on initialization
...
单独或一起尝试,看看是否可以解决问题。单独地,您可以缩小它是由于 PYTHONPATH
(单独 -E
会修复)还是通用 user-level 搜索(单独 -s
会修复)。
其他想法
我发现 Python 3.10 安装泄漏到 Python 3.8 解释器 运行 中很奇怪。通常,site
模块只加载匹配的主要+次要版本(例如,3.8 应该只选择另一个 3.8)。这可能表明正在发生其他事情。也许设置了 PYTHONPATH
环境? (真的不应该。)
一般来说,我不推荐使用base环境进行工作。这从未在 Anaconda 文档中记录,但许多 long-term Conda 用户通常在他们的 base 中断或 get 包过载之后才发现这是一个痛苦的事实他们升级 conda 包的时间过长。相反,创建一个新环境并默认激活它而不是 base.