2017-06-06 8 views
0

誰かが私を助けることができますか?Prawスクリプトをインポートする際のValueError

自分自身をよりよく説明しましょう。 私は、このフォルダの構造を有する:

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

を、私は直接python jobs\redisJob.pyを実行した場合、それだけで正常に動作します。

しかし、私はそれが私にこのエラーが発生しますmain.pyでファイルredisJob.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) 

念のために、importコマンドは

from jobs.redisJob import DailyJob 


である私がやりました何か問題でも?

更新 回避策が見つかりました。 main.pyurllib3をインポートして、正しいバージョンを割り当ててください。

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

これらの3行はスクリプトの先頭にある必要があります。

答えて

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

関連する問題