Вы испытываете известную ошибку , которая затрагивает Python 2.4-2.6.
Если вы не можете изменить или исправить свою версию Python, решение @ jd обойдет эту проблему.
Однако, если вам нужно более общее решение, которое работает как стандартный urljoin
, вы можете использовать метод-обертку, который реализует обходной путь для этого конкретного варианта использования, и по умолчанию использовать стандартный urljoin()
в противном случае.
Например:
import urlparse
def myurljoin(base, url, allow_fragments=True):
if url[0] != "?":
return urlparse.urljoin(base, url, allow_fragments)
if not allow_fragments:
url = url.split("#", 1)[0]
parsed = list(urlparse.urlparse(base))
parsed[4] = url[1:] # assign params field
return urlparse.urlunparse(parsed)