在命令行中运行大多数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的组合有关,但是想检查是否有其他人遇到过这个或者知道如何修复它。
答案 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')