π©βπ» Π PyPI Π²Π½Π΅Π΄ΡΠΈΠ» Π½ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ Python-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² PyPI (Python Package Index)
ΡΠΎΠΎΠ±ΡΠΈΠ»ΠΈ ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° ΡΠΈΡΡΠΎΠ²ΠΎΠΉ Π°ΡΡΠ΅ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΠ» ΠΏΡΠ΅ΠΆΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
PGP-ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ Π½Π΅ ΡΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, Π° ΡΡΠ΅ΡΡΡ ΡΡΠΎΡΠΎΠ½Π° (ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²), ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠ΅ΡΠ΅Π· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° OpenID Connect. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
Π²ΡΠΎΠ΄Π΅ GitHub ΠΈΠ»ΠΈ GitLab.
ΠΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΡΠΈΡΡΡΠΈΠ΅ ΡΡΠ°ΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· PGP-ΠΏΠΎΠ΄ΠΏΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΡΠΈΡΠ°Π»ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠΊΡΡΡΡΡ
PGP-ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΡ
Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌ. ΠΠ· 1069 PGP-ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡ
ΡΡ Ρ 2020 Π³ΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² PyPI, 29% ΠΊΠ»ΡΡΠ΅ΠΉ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π½Π° ΠΊΡΡΠΏΠ½ΡΡ
ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
ΠΊΠ»ΡΡΠ΅ΠΉ, Π° 35% ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π°ΡΠ΄ΠΈΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΠ΅ 36% ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΠΎΠΊΡΡΠ²Π°Π»ΠΈ Π²ΡΠ΅Π³ΠΎ 0.3% ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ².
Π ΡΠ°ΠΌΠΊΠ°Ρ
Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΅ΠΌΠ΅ΡΠ½ΡΡ
ΠΊΠ»ΡΡΠ΅ΠΉ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌΠΎΡΠΈΠΉ, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΡ
ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠΌ OpenID Connect.
ΠΠΎΠ³Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠ»ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ, ΠΎΠ½ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ²ΡΠ·Ρ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. ΠΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Sigstore ΠΈ in-toto Attestation Framework.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² Π°ΡΡΠ΅ΡΡΠ°ΡΠΈΠΈ
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ
PGP-ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΡΠ»ΠΈ
Π·Π°ΠΊΡΡΡΡΠΉ ΠΊΠ»ΡΡ ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°Π΅ΡΡΡ Π°ΡΠ°ΠΊΠ΅, Π²ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌΠΈ. ΠΡΡΠ΅ΡΡΠ°ΡΠΈΡ ΠΆΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ ΠΏΡΠ°Π²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ Π΅Π³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· GitHub Actions, Π°ΡΡΠ΅ΡΡΠ°ΡΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ Π² PyPI ΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ, ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈ Ρ
Π΅ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠΈΡΠ°, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΠ»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΠΎΠ΄Π»ΠΈΠ½Π½ΠΎΡΡΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΡΠ³ΡΠΎΠ· Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
, ΡΠΎΠ·Π΄Π°ΡΡΠΈΡ
ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΈ ΡΠ°ΠΌΠΎΠΌ PyPI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΆΡΡΠ½Π°Π». Π§ΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π°Π΄Π½ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Π² Π½Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ° Β«Π΄Π΅ΡΠ΅Π²Π° ΠΠ΅ΡΠΊΠ»Π°Β» (Merkle Tree), Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΠ²Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΠ²ΠΈ ΠΈ ΡΠ·Π»Ρ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡ
Π΅ΠΌΡ Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΠΉ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³
Π΅ PyPI Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«fabriceΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ΅Ρ
Π½ΠΈΠΊΡ ΡΠ°ΠΉΠΏΡΠΊΠ²ΠΎΡΡΠΈΠ½Π³Π° β Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡ
ΠΎΠΆΠ΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΠ΅Π³ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, exampl Π²ΠΌΠ΅ΡΡΠΎ example, djangoo Π²ΠΌΠ΅ΡΡΠΎ django, pyhton Π²ΠΌΠ΅ΡΡΠΎ python ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅), ΡΡΠΎΠ±Ρ Π·Π°ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Β«fabricΒ».
ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π°ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ
201 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Π·Π°Π³ΡΡΠ·ΠΎΠΊ (ΠΎΠΊΠΎΠ»ΠΎ 7 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅ΡΡΡ). ΠΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡΡΠ°Π²Π°Π»ΡΡ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ Ρ 2021 Π³ΠΎΠ΄Π° ΠΈ ΡΡΠΏΠ΅Π» Π½Π°Π±ΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ 37 ΡΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΎΠΊ.
ΠΠ°ΠΊΠ΅Ρ Β«fabriceΒ» ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°Π» ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ AWS (Amazon Web Services), ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΡΠΊΠ΄ΠΎΡΠΎΠ² ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΠΊΡΠΈΠΏΡΠΎΠ².
ΠΠΊΡΠΈΠ²ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»Π° ΠΊΠ°ΠΊ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
Linux, ΡΠ°ΠΊ ΠΈ Π²
Windows. Π ΡΠ»ΡΡΠ°Π΅ Ρ Linux, ΡΠ°ΠΉΠ»Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ, Π·Π°Π³ΡΡΠΆΠ°Π»ΠΈΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ~/.local/bin/vscode.
@pythonl