“UserWarning: The NumPy module was reloaded (imported a second time).”高效解决方案

报错信息还原

控制台输出:

/home/lizhicheng/.conda/envs/dataprocess/bin/python /home/lizhicheng/DataProcess/txt2csv.py
/home/lizhicheng/.local/lib/python3.8/site-packages/pandas/init.py:11:UserWarning: The NumPy module was reloaded (imported a second time).This can in some cases result in small but subtle issues and is discouraged. import(_dependency)

主要报错信息:
UserWarning: The NumPy module was reloaded (imported a second time).This can in some cases result in small but subtle issues and is discouraged. import(_dependency)


问题场景

集成编译环境Pycharm,远程ssh连接Ubuntu服务器,运行其中的Python代码,代码解释利用的conda虚拟环境。

我使用conda创建了一个虚拟环境,在虚拟环境中运行代码,运行的代码中使用的包是pandas,没有使用其他任何包。
但是运行一下,莫名其妙的出来一个UserWarning,提示我The NumPy module was reloaded (imported a second time).

我大概理解是Numpy这个包被load了两次。
后来在网上找了很多种解决方案,也问了Chatgpt4,无非是莫名其妙的让我把numpy或者是pandas的packet删了又装,装了又删,这个奇怪的问题仍然没有解决。

后来,我看了完整的控制台输出,发现一个很奇怪很奇怪的问题:
我明明是在conda虚拟环境中,且运行代码的命令是/home/lizhicheng/.conda/envs/dataprocess/bin/python用的是conda虚拟环境中的python解释器,那为什么控制台输出本地local python解释器的warning呢(/home/lizhicheng/.local/lib/python3.8/site-packages/pandas)


问题解释

所有的Python解释器都会优先使用来自site.USER_SITE的包,而默认情况下,这个位置是~/.local/lib/pythonX.Y/site-packages。这是因为site.USER_BASE默认设置为~/.local
扒拉扒拉我还可以说一堆,但是已经没有意义了,因为有点麻烦。

简而言之:所有的Python解释器都会优先使用~/.local/lib/pythonX.Y/site-packages这个里面的包

那么有没有非常简单简洁的解决方案呢?还真有!
(我可能问题解释的不清楚,但是解决方案是真的有用!)


解决方案

  1. 点开pycharm右上角的Edit Configurations...
    “UserWarning: The NumPy module was reloaded (imported a second time).”高效解决方案_第1张图片
  2. Interpreter options这里填-s
    “UserWarning: The NumPy module was reloaded (imported a second time).”高效解决方案_第2张图片
  3. 完美解决!

解释:
在 Python 命令行中使用 -s 选项的作用是禁用用户的 site 模块。site 模块会在 Python 启动时自动加载,它配置了一些基础的路径设置,例如添加目录到 sys.path(这是 Python 查找模块的路径列表)。

当使用 -s 选项时,Python 解释器会跳过加载 site 模块。这通常用于在更“干净”的环境中运行 Python,比如在需要避免外部模块干扰的情况下。这样可以确保程序的运行环境不受到某些全局安装的包或用户级配置的影响。


后记

所有的Python解释器都会优先使用~/.local/lib/pythonX.Y/site-packages这个里面的包,也就是说,~/.local/lib/pythonX.Y/site-packages这个里面的包具有最高优先级,为了防止这个里面的包对自己创建的conda虚拟环境的影响,我们可以把这个下面的包给清空(是清空~/.local/lib/pythonX.Y/site-packages目录下的包,但是不要删除这个目录,以免产生不好的影响),然后对于所有的项目,都新建一个conda虚拟环境来解释,这样都不会出现这种warning,也不用去改配置或者环境变量。

你可能感兴趣的:(#,Python,numpy,python)