18

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

我认为这与使用分布式和 virtualenv 的组合有关,但想检查是否有其他人遇到过这个问题或者知道如何修复它。

4

5 回答 5

7

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

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

于 2011-01-29T02:54:47.887 回答
4

相当于在检查引擎灯上放一点电工胶带的 python 是使用-W命令行标志或添加警告过滤器

于 2011-01-04T16:19:54.070 回答
2

就我而言,重新安装任何东西都没有帮助。/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python 中有一些孤立的 .pyc 文件(特别是 pkg_resources.pyc)

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

让它工作。这个链接帮助我找到了问题。

于 2013-01-21T14:55:54.307 回答
0

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

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

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

于 2013-04-04T23:00:35.400 回答
0

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

try:  
    import pytz  
except ImportError:  
    from pkg_resources import require  
    require('pytz')  
于 2016-04-29T18:22:20.767 回答