导入 praw 脚本时出现 ValueError

ValueError when importing a praw script

有人可以帮助我吗?

让我更好地解释一下自己。 我有这个文件夹结构:

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)

为了确认,导入命令是

from jobs.redisJob import DailyJob


我是不是做错了什么?

更新 我找到了解决方法。 我只需要在我的 main.py 中导入 urllib3,然后分配正确的版本。

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

这三行必须在我的脚本之上。

您似乎是在不同的环境下导入。不同的启动技术可以产生不同的进程和外壳;这可能导致环境变量的值与预期不同。

我对 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

您可能需要拆分字符串、为缺失值提供默认值或进行一些其他调整。