2010-10-05 61 views
18

在命令行中運行最Python腳本時,遇到了以下幾種警告:你如何正確模塊已經加載Python的UserWarnings?

/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中的組合做的,但要檢查是否有人在跑對此或將知道如何去解決它。

+3

如果您安裝使用兩種不同的安裝方式(一個操作系統封裝相同的庫,可以發生,和easy_install,fi)。 – Apalala 2010-12-29 21:38:02

回答

7

也許使用virtualenv選項--no-site-packages,這樣你就不會在虛擬環境中看到任何系統站點包。將項目安裝在virtualenv和系統根目錄中可能是導致此問題的原因。

在創建virtualenv時使用--no-site-packages可防止系統軟件包之間發生任何衝突。創建新的virtualenv以防止發生衝突時,我幾乎總是使用該選項。雖然我可能有幾個圖書館副本,但至少他們不會彼此混淆。

+0

是的,我也練習這個。我不記得當我遇到這個問題時是否使用了virtualenv,但我確定它與此有關。 – 2011-01-31 06:01:52

+0

請注意,自2011年11月以來,'--no-site-packages' [已成爲默認設置](http://virtualenv.readthedocs.org/en/latest/changes.html#id38)。 – duozmo 2015-12-15 23:05:08

4

在檢查引擎指示燈上放置一些電子膠帶的python相當於使用-W命令行標誌或通過添加warning filter

+0

這確實是電氣膠帶修復哈哈。我正在選擇刪除'distribute'和重新安裝的更爲可靠的方法,但是還沒有找到一個體面的方法,但沒有修改我的setuptools安裝。 – 2011-01-04 18:44:02

2

在我的情況下重新安裝任何東西都沒有幫助。有一些孤立的pyc文件(特別是pkg_resources.pyc)留在/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python

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

使它工作。 This link幫助我追蹤了這個問題。

0

我今天也有這種Python包裝下地獄。

在Ubuntu上運行Python 2.7.3,使用命名空間包並使用zc.buildout。

最後,更新系統範圍從舊版本0.6.30分發到最新版本0.6.35解決了這個問題。

0

如果警告顯示你正在修改程序,嘗試這種方式(examply與pytz):

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