如何修正Python中的“模块已加载”用户警告?

18 投票
5 回答
7382 浏览
提问于 2025-04-16 05:00

在命令行运行大多数Python脚本时,出现了以下类型的警告:

/Library/Python/2.6/site-packages/virtualenvwrapper/hook_loader.py:16: UserWarning: Module 

pkg_resources was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.pyc, but /Library/Python/2.6/site-packages is being added to sys.path
  import pkg_resources

/Library/Python/2.6/site-packages/virtualenvwrapper/hook_loader.py:16: UserWarning: Module site was already imported from /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc, but /Library/Python/2.6/site-packages is being added to sys.path
  import pkg_resources

我觉得这可能和同时使用distribute和virtualenv有关,但我想确认一下是否有人遇到过这个问题,或者知道怎么解决它。

5 个回答

2

在我的情况下,重新安装任何东西都没有用。系统里有一些孤立的 .pyc 文件(特别是 pkg_resources.pyc),它们留在了 /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python 这个地方。

sudo find . -type f -name "*.pyc" -delete

解决了这个问题。这个链接帮我找到了问题所在。

4

在Python中,想要像用电工胶带遮住发动机故障灯那样忽略警告,可以使用 -W 这个命令行选项,或者添加一个 警告过滤器

7

你可以在创建虚拟环境的时候使用 --no-site-packages 这个选项,这样在你的虚拟环境里就看不到系统的库文件了。因为如果你的虚拟环境和系统根目录下都有一些库,可能会导致一些问题。

使用 --no-site-packages 创建虚拟环境时,可以避免系统库之间的冲突。我几乎每次创建新的虚拟环境时都会用这个选项,这样可以防止出现冲突。虽然我可能会有多个库的副本,但至少它们之间不会互相干扰。

撰写回答