2017-06-06 54 views
0

有人可以幫我嗎?導入praw腳本時的ValueError

讓我更好地解釋自己。 我有這樣的文件夾結構:

praw-test 
    jobs 
     __init__.py 
     redisJob.py 
    main.py 

,如果我直接運行python jobs\redisJob.py它工作得很好。

但是,如果我嘗試導入該文件redisJob.pymain.py它給了我這個錯誤:

File ".\main.py", line 13, in <module> 
    from jobs.redisJob import DailyJob 
    File "D:\git\praw-test\jobs\redisJob.py", line 5, in <module> 
    import praw 
    File "D:\git\praw-test\env\lib\site-packages\praw\__init__.py", line 14, in <module> 
    from .reddit import Reddit # NOQA 
    File "D:\git\praw-test\env\lib\site-packages\praw\reddit.py", line 5, in <module> 
    from update_checker import update_check 
    File "D:\git\praw-test\env\lib\site-packages\update_checker.py", line 11, in <module> 
    import requests 
    File "D:\git\praw-test\env\lib\site-packages\requests\__init__.py", line 53, in <module> 
    major, minor, patch = urllib3_version 
ValueError: not enough values to unpack (expected 3, got 1) 

只是爲了確保,導入命令是

from jobs.redisJob import DailyJob 


我怎麼辦有問題?

更新 我找到了解決方法。 我只需要在我的main.py中導入urllib3,然後分配正確的版本。

import urllib3 
urllib3.__version__ = '1.21.1' 
from jobs.redisJob import DailyJob 

這三行必須在我的腳本之上。

回答

0

看來您是在不同的環境下導入的。不同的發射技術可以產生不同的過程和炮彈;這可能會導致環境變量具有預期值以外的值。

我不知道SDE的詳細信息給你一個確定的解決方案,但我當然可以推薦一個簡單的調試線。在問題行之前,插入

print urllib3_version 

查看您在每種啓動方法中獲得的值。我期望有一些實現細節,比如值以某種方式連接在一起,或者有一些缺失。

可以解決這個帶有複選:

if len(urllib3_version) == 3: 
    major, minor, patch = urllib3_version 
else: 
    # This will depend on what you see in the single value 

您可能需要分割字符串,默認的供應缺失值,或者一些其他適應。

+0

'python main.py'打印'dev'和'python jobs \ redisJob.py'打印'1.21.1'。我怎樣才能解決這個問題,而無需手動編輯模塊? – Alessandro

+1

好的,我找到了一個解決方法,我編輯了我的帖子。很顯然,非常感謝你,我從來沒有想過編輯一個像urllib3這樣的模塊! – Alessandro