模块 pytz 已经被导入

4 投票
3 回答
4808 浏览
提问于 2025-04-17 00:38

我在运行Python代码时总是遇到以下错误:

C:\Python26\lib\site-packages\pytz\__init__.py:32: 

UserWarning: Module pytz was already imported from 
  C:\Python26\lib\site-packages\pytz\__init__.pyc, 
    but c:\python26\lib\site-packages\pytz-2011h-py2.6.egg 
      is being added to sys.path

from pkg_resources import resource_stream

这个错误是什么意思,我该怎么解决呢?

3 个回答

0

我遇到了以下问题:

/Users/rkiko/anaconda/lib/python2.7/site-packages/pytz/__init__.py:29: UserWarning: Module pytz  
was already imported from /Users/rkiko/anaconda/lib/python2.7/site-packages/pytz/__init__.pyc, but 
/Library/Python/2.7/site-packages is being added to sys.path
from pkg_resources import resource_stream

我把 /Users/rkiko/anaconda/lib/python2.7/site-packages/ 里的整个 pytz 文件夹删除了,这样问题就解决了。这样只剩下一个 pytz 包了。这个解决办法和上面 agf 的方法类似,但在我的情况下,干扰我的不是一个“蛋”(egg),而是第二个 pytz 的安装。所以,检查一下你是否有两个安装版本,删除掉那个不是系统自带的 Python 安装的。

2

来自 Python的错误追踪系统

看起来,产生很多无用警告的主要原因是,当在导入其他模块(这些模块通常是打包成egg格式的)之后再导入pkg_resources时。要解决这个问题,可以修改insert_on()方法,让它只在某个分发包不在sys.path中时检查冲突。换句话说,如果你再添加一个已经存在的东西,就没有必要重复收到警告了。


想要了解导入过程中的情况,只需写一个脚本并查看输出结果。这可以给你一些有用的信息:

import sys, setuptools, pkg_resources
print sys.path
print pkg_resources.__file__
print setuptools.__file__
4

你已经在系统里安装了 pytz 这个包,同时还安装了一个 .egg 文件。只要把这个 .egg 文件删掉,你就不会看到那个警告了。

不过要注意,这个警告被称为“虚假警告”——其实这并不是真正的问题,不过如果这两个版本不一样的话,可能会变成问题。

撰写回答