Priontálann dhá mhainneachtain dhifriúla an lorg céanna de chuid pip, agus déanann an deisiú a oireann do dhuine acu an ceann eile níos measa. Teastaíonn uasghrádú ó chliant atá róshean chun óstach tollánaithe a ainmniú. Teastaíonn fréamh-theastas iontaofa ó sheachfhreastalaí a athshíníonn trácht, ní íosghrádú. Faigh amach cén ceann den dá rud atá agat sula n-athraíonn tú athróg seachfhreastalaí, mar téann na cosáin i dtreonna contrártha.

Léigh na creataí deireanacha sula mbaineann tú le socruithe

Insíonn an áit a gcríochnaíonn an lorg duit cén tsraith a ghéill. Má tá na creataí deiridh taobh istigh de chód TLS urllib3 a thagann le pip agus má tá an téacs ag gearán faoi ainm óstach, ní raibh an leabharlann cliaint in ann céim fíoraithe a chríochnú, agus is fadhb leagain í sin i bhfad níos minice ná fadhb theastais. Má thuairiscíonn an téacs ceangal diúltaithe, ainm seachfhreastalaí gan réiteach nó HTTP 407 ina ionad, is é deireadh an tolláin atá ciontach agus ní athróidh aon uasghrádú é sin.

Gabhadh leagan pip agus na hathróga seachfhreastalaí sa phlaosc chéanna a theipeann. Iompraíonn plosc a osclaíodh sula ndeachaigh an tollán suas luachanna difriúla ó cheann a osclaíodh ina dhiaidh, agus is minic gurb é an difríocht eatarthu an diagnóis iomlán.

python3 -m pip --version
env | grep -i -E 'proxy|no_proxy'

Nuair atá an cliant níos sine ná an tollán

Tháinig foinsí níos sine de pip le stac HTTPS a chaill ainm an óstaigh sprice nuair a chuir tollán an socóg faoi iamh. Is é an teachtaireacht check_hostname a eisíonn an stac sin nuair a shroicheann sé fíorú gan ainm le cur i gcomparáid. Baineann uasghrádú an locht as toisc go gcoimeádann an cliant níos nuaí an t-ainm tríd an gcroitheadh lámh, agus tá an t-athrú saor go leor le triail ar dtús aon uair a dhíríonn na creataí deiridh ar chód TLS atá san áireamh.

Mura féidir teacht ar an innéacs ón meaisín a theipeann, faigh roth reatha ar óstach ar féidir leis é a dhéanamh agus suiteáil ón gcomhad. Úsáid an t-ainm comhaid a íoslódáil tú i ndáiríre, ní leagan a cóipeáladh ó phost blag.

python3 -m pip install --upgrade pip
python3 -m pip install ./pip-24.2-py3-none-any.whl

Nuair a athshíníonn an seachfhreastalaí trácht

Táirgeann seachfhreastalaí a chríochnaíonn TLS agus a atheisíonn teastais faoi fhréamh chorparáideach earráid dhifriúil: certificate verify failed, ní gearán faoi ainm óstach. Is é an difríocht sin an leid, mar shroich an cliant freastalaí agus ansin dhiúltaigh sé don fhéiniúlacht a taispeánadh dó. Is é an deisiú ná muinín a chur sa fhréamh sin go sainráite, cibé acu le haghaidh aon ordaithe amháin nó tríd an athróg PIP_CERT, ionas gur féidir leis an gcliant slabhra a thógáil chuig an rud a chuireann an seachfhreastalaí i láthair. Oibríonn cur leis an bhfréamh i stór iontaobhais an chórais freisin, ach athraíonn sé iontaobhas do gach clár ar an meaisín, agus is cinneadh níos mó é sin ná deisiú a dhéanamh ar shuiteáil aon phacáiste amháin.

Coinnigh --trusted-host mar dhiagnóis, ní mar staid shocair riamh. Cuireann sé as an seiceáil a bhí tú ag iarraidh a choinneáil, mar sin breathnaíonn teastas atá fíor-mhícheart sláintiúil ina dhiaidh. Má d'úsáid tú é chun pacáiste amháin a shuiteáil, bain é agus deisigh an slabhra roimh an chéad eisiúint eile.

Déanann do chód Python féin neamhaird iomlán ar chumraíocht pip. Teastaíonn ó ghlao requests an seachfhreastalaí agus an beart a bheith curtha ar aghaidh san áit a bhfeiceann an seisiún sin iad, agus sin an fáth a socraíonn an bloc thíos an dá rud ar an rud seisiúin.

pip install --cert /usr/local/share/ca-certificates/corp-root.crt requests
export PIP_CERT=/usr/local/share/ca-certificates/corp-root.crt
s = requests.Session()
s.proxies = {"https": "http://10.20.30.40:8080"}
s.verify = "/usr/local/share/ca-certificates/corp-root.crt"
s.get("https://pypi.org/simple/", timeout=15)

Nuair atá an deireadh nó an port mícheart

Is minic a athscríobhann cliant tolláin seachfhreastalaí an chórais agus é ag nascadh, rud a fhágann pip dírithe ar óstach nach bhfreagraíonn riamh ar an port sin. Tástáil an deireadh le cliant nach pip é sula n-athraíonn tú aon socrú pip. Má theipeann curl leis an argóint seachfhreastalaí chéanna, tá an locht os cionn pip agus ní chabhróidh aon mhéid cumraíochta laistigh de pip.

Deir bratach an ordaithe agus na hathróga timpeallachta an rud céanna do scóip dhifriúil: baineann an bhratach le haon agairt amháin, na hathróga le gach próiseas a thosaítear ina dhiaidh. Cuir NO_PROXY leis d'innéacs inmheánach ionas go scipeálann trácht príobháideach pacáistí an mhalairt slí tríd an tollán.

curl -x http://proxy.corp.internal:8080 --head https://pypi.org/simple/
pip install --proxy http://proxy.corp.internal:8080 requests

Coinnigh an socrú agus cruthaigh go n-oibríonn an cosán

Stóráil an seachfhreastalaí i gcumraíocht pip féin nuair ba chóir dó maireachtáil níos faide ná an phlosc reatha, ansin léigh siar an rud a úsáidfidh pip i ndáiríre. Ainmníonn aschur debug an comhad agus an athróg taobh thiar de gach luach, rud a réitíonn díospóidí faoi thosaíocht níos tapúla ná an doiciméadú a léamh.

Úsáideann an fíorú dhá chliant d'aon ghnó. Cruthaíonn an t-iarratas ón leabharlann chaighdeánach an bealach agus an slabhra iontaobhais, agus cruthaíonn an íoslódáil go n-aontaíonn cumraíocht pip féin leo. Nuair a éiríonn leis an gcéad cheann agus a theipeann leis an dara ceann, tá an difríocht taobh istigh de pip seachas sa líonra.

pip config set global.proxy http://proxy.corp.internal:8080
pip config debug
python3 -c "import urllib.request as r; print(r.urlopen('https://pypi.org/simple/').status)"
pip download --no-deps -d /tmp/wheelcheck requests
What you seeFirst commandRepair
hostname message inside vendored TLS framespython3 -m pip --versionupgrade the client
certificate verify failed after the tunnelcurl -x http://proxy.corp.internal:8080 --head https://pypi.org/simple/trust the corporate root
connection refused or HTTP 407env | grep -i -E 'proxy|no_proxy'correct host, port or credentials

Ailt ghaolmhara