你如何纠正模块已经加载的Python中的UserWarnings?

时间:2010-10-05 06:38:12

标签: python warnings virtualenv distribute

在命令行中运行大多数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 个答案:

答案 0 :(得分:7)

也许使用virtualenv选项--no-site-packages,这样您就不会在虚拟环境中看到任何系统站点包。在virtualenv和系统根目录中安装项目可能是导致此问题的原因。

在创建virtualenv时使用--no-site-packages可防止系统包之间发生任何冲突。在创建新的virtualenv以防止任何冲突时,我几乎总是使用该选项。虽然我可能有几个库的副本,但至少他们不会互相混淆。

答案 1 :(得分:4)

相当于在检查引擎灯上放置一些电气胶带的python将使用-W命令行标志或添加warning filter

答案 2 :(得分:2)

在我的情况下,重新安装任何东西都无济于事。在/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python

中留下了一些孤立的.pyc文件(特别是pkg_resources.pyc)
sudo find . -type f -name "*.pyc" -delete

让它发挥作用。 This link帮助我追查问题。

答案 3 :(得分:0)

我今天也有这种Python打包访问。

在Ubuntu上运行Python 2.7.3,使用命名空间包并使用zc.buildout。

最后,更新系统范围从旧版本0.6.30发布到最新版本0.6.35解决了这个问题。

答案 4 :(得分:0)

如果警告显示在您正在修改的程序中,请尝试这种方式(例如pytz):

try:  
    import pytz  
except ImportError:  
    from pkg_resources import require  
    require('pytz')