2016-08-29 2 views
3

質問を続行します How to get pip to work behind a proxy serverPIPどのようにエスケープ文字#パスワードですか?

私はWindows ServerとPython 3.5(64)を持っています。

パスワードで私のユーザーは#を含む。

私はいくつかの解決を使用してみてください:

 
"C:\Program Files\Python35\scripts\pip.exe" install --proxy http://proxy_user:pwd#[email protected]:1111 TwitterApi 

"C:\Program Files\Python35\scripts\pip.exe" install --proxy "http://proxy_user:pwd#123"@proxy.su:1111 TwitterApi 

"C:\Program Files\Python35\scripts\pip.exe" install --proxy http://"proxy_user:pwd#123"@proxy.su:1111 TwitterApi 

"C:\Program Files\Python35\scripts\pip.exe" install --proxy http://proxy_user:"pwd#123"@proxy.su:1111 TwitterApi 

しかし、どのようにこの場合は文字#をエスケープエラー

 
    File "c:\program files\python35\lib\site-packages\pip\_vendor\requests\package 
s\urllib3\util\url.py", line 189, in parse_url 
    raise LocationParseError(url) 
pip._vendor.requests.packages.urllib3.exceptions.LocationParseError: Failed to p 
arse: proxy_user:pwd 

を取得するには?

+0

試し "PWD \#123"、それが動作する可能性があります。 – aliva

+0

にエラーがあります:pip._vendor.requests.packages.urllib3.exceptions.LocationParseError:失敗しました ass:proxy_user:pwd \ –

+0

# –

答えて

2

クイックウェイ・アウト: - :

Strictly speaking, the literal # character is not valid in the userinfo portion of a URI, according to RFC 3986, and should be percent encoded. However, it's not exactly a surprise that many tools handle this ok: there's clearly no actual ambiguity about that character. Note, however, that if there were an @ symbol in the password you'd definitely have to urlencode it: for that reason, it's a good habit to get into to urlencode your passwords before they go into URIs.

# -> %23

OR

A better way for pip to handle this might be to add a --proxy-auth flag that takes : and does the encoding for the user before adding it to the Proxy URL.


問題すなわち符号化された形式でそれを入力します。これは許可されていないものですTh提出した問題parse_url fails when given credentials in the URL with '/', '#', or '?'に電子応答:

The RFC says specifically :

The authority component is preceded by a double slash (" // ") and is terminated by the next slash (" / "), question mark ("?"), or number sign (" # ") character, or by the end of the URI. In other words, the current behaviour is correct in expecting the authority to be terminated by the first / (or ? or #) it finds after the preceeding // . Am I sympathetic to people trying to use proxy URIs with pip? Absolutely. I think hacking together something that violates the RFC has the potential for nasty surprises later on.


0
else examples 
 

    $user = str_replace('@', '%40', $user); 
    $pass = str_replace('%', '%25', $pass); // don't down! (%) 
    $pass = str_replace('#', '%23', $pass); 
    $pass = str_replace('@', '%40', $pass); 
    $pass = str_replace(':', '%3a', $pass); 
    $pass = str_replace(';', '%3b', $pass); 
    $pass = str_replace('?', '%3f', $pass); 
    $pass = str_replace('$', '%24', $pass); 
    $pass = str_replace('!', '%21', $pass); 
    $pass = str_replace('/', '%2f', $pass); 
    $pass = str_replace('\'', '%27', $pass); 
    $pass = str_replace('"', '%22', $pass); 

関連する問題