Системная версия библиотеки выбирается внутри virtualenv, а не версия, установленная в virtualenv - PullRequest
1 голос
/ 11 июня 2019

У меня urllib3 установлено в моем sampler_env virtualenv.

У меня также есть другая библиотека pytube внутри этого virtualenv, которая имеет некоторую зависимость urllib, например:

    import urllib2
    from urllib import urlencode

Иногда, когда pytube выдает ошибку, я вижу в трассировке, что она использует систему urllib, а не ту, что внутри virtualenv:

Traceback (most recent call last):
  File "/home/bart/python_projects/sampler_env/lib/python3.5/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/home/bart/python_projects/sampler_env/lib/python3.5/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/bart/python_projects/sampler_env/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/bart/python_projects/sampler_env/sampler_proj/sampler/views.py", line 44, in download_audio
    audio_manager.download()
  File "/home/bart/python_projects/sampler_env/sampler_proj/sampler/utils/audio_manager.py", line 163, in download
    self.audio.download(dst, self.video_title)
  File "/home/bart/python_projects/sampler_env/lib/python3.5/site-packages/pytube/streams.py", line 217, in download
    bytes_remaining = self.filesize
  File "/home/bart/python_projects/sampler_env/lib/python3.5/site-packages/pytube/streams.py", line 164, in filesize
    headers = request.get(self.url, headers=True)
  File "/home/bart/python_projects/sampler_env/lib/python3.5/site-packages/pytube/request.py", line 21, in get
    response = urlopen(url)

# why system urllib?

  File "/usr/lib/python3.5/urllib/request.py", line 163, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.5/urllib/request.py", line 472, in open
    response = meth(req, response)
  File "/usr/lib/python3.5/urllib/request.py", line 582, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.5/urllib/request.py", line 510, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.5/urllib/request.py", line 590, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

Как мне это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...