Pipenv: ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ `pipenv` ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 5 Π°ΠΏΡ€. 2018  Β·  74ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: pypa/pipenv

Π’Π·Π»ΠΎΠΌΠ°Π² maya я ΠΈΠ·Π²Π»Π΅ΠΊ нСсколько ΡƒΡ€ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΠΎΠΌ использовании pipenv Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Python. Π― оТидаю, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ рассмотрят ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Ссли ΠΌΡ‹ ΠΏΡ€ΠΈΠ΄Π΅ΠΌ ΠΊ соглашСнию, (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ) тСкст ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² pipenv docs.

pipenv ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python

Π Π•Π”ΠΠšΠ’Π˜Π ΠžΠ’ΠΠ’Π¬
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΎΠ±Ρ‰ΠΈΡ… (Π² основном с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях Python ΠΈ ОБ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π² строгой ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ случаСм (Π² любом случаС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ просмотритС всС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ Β«ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹Β»).

ΠšΠžΠΠ•Π¦ Π Π•Π”ΠΠšΠ’Π˜Π ΠžΠ’ΠΠΠ˜Π―

TL; DR : Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² pipenv Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python, вСроятно, внСсСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ добавляя ΠΊ бСзопасности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ Pipfile , Pipfile.lock ΠΈ .env Π²Π½Π΅ систСмы управлСния вСрсиями Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π’Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ pipenv нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ находятся Π² .gitignore .

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python ΠΏΡ€ΠΎΡ‚ΠΈΠ² прилоТСния Python

Под Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ python я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ setup.py , ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для распространСния ΠΈ использования Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ вСрсиСй python ΠΈ / ΠΈΠ»ΠΈ ОБ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: maya , requests , flask ΠΈ Ρ‚. Π”.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны (Π½Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python) Π΅ΡΡ‚ΡŒ прилоТСния, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° Python, ОБ ΠΈ часто Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π² строго согласованной срСдС.

pipfile ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ описываСт эти различия Π² Ρ„Π°ΠΉΠ»Π΅ Pipfile vs setup.py .

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pipenv (инструмСнт развСртывания)

Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн с ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ pipenv - это инструмСнт развСртывания, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ позволяСт:

  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ строгиС трСбования ( Pipfile.lock ) для развСртывания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСды
  • воспроизводимо ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ эти строгиС трСбования Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² срСдС Python, ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

Π’Ρ‹Π·ΠΎΠ² инструмСнта ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ pipenv Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ создаст Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python ΠΈΠ»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΡ… создании. Π”Π°, pipenv ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ (ΠΏΡ€ΠΈ локальной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ), Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ нанСсти Π²Ρ€Π΅Π΄ (часто Π² тСстах CI ΠΏΡ€ΠΈ использовании Π±Π΅Π· Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ осмыслСния).

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ «сообраТСний бСзопасности» Π² Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ контСкстС

TL; DR : pipenv обСспСчиваСт Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ срСду Π·Π° счСт примСнСния ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… зависимостСй, описанных Π² Ρ„Π°ΠΉΠ»Π΅ Pipfile.lock Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ python Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ абстрактныС зависимости (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Pipfile.lock ).

pipenv свСтится Π² сцСнариях развСртывания послС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… шагов:

  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ абстрактныС зависимости (Ρ‡Π΅Ρ€Π΅Π· Pipfile )
  • Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ получаСтся Pipfile.lock
  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ) срСду Python, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ эти ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости
  • Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ данная срСда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ бСзопасна
  • Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ протСстированный "Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ" Pipfile.lock ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½ΠΎΠΉ срСды Python
  • Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv sync для примСнСния "Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ" Pipfile.lock Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС, получая ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΡƒΡŽ срСду Python.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ python Ρ‚Π°ΠΊΠΎΠΉ бСзопасности Π½Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости . ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ этого ΠΏΡ€Π°Π²ΠΈΠ»Π° (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ python) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, ΠΊΠ°ΠΊ:

  • ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с поиском подходящСй вСрсии раздСляСмых Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ строгий ΠΏΠ°ΠΊΠ΅Ρ‚ опрСдСляСт Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ раздСляСмой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈ вСсьма вСроятно, Ρ‡Ρ‚ΠΎ вСрсии Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ)
  • ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ вСрсии Python, ОБ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² срСды, ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ контСкстС ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² исходных абстрактных зависимостях.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: скрытиС сломанных зависимостСй setup.py

setup.py опрСдСляСт всС абстрактныС зависимости Ρ‡Π΅Ρ€Π΅Π· install_requires .

Если Pipfile опрСдСляСт эти зависимости, это ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ:

  • отсутствуСт Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² install_requires
  • Pipfile опрСдСляСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° (Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ вСрсий ΠΈ Ρ‚. Π”.) Для зависимости, Π° install_requires - Π½Π΅Ρ‚.

Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, ΡΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

  • зависимости, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ Π² Pipfile
  • Ρ€Π°Π·Π΄Π΅Π» [packages] Π² Pipfile Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ пустым, Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ самой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: Pipfile.lock Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Pipfile.lock (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎ «сообраТСниям бСзопасности») Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  • описанныС зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий python ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ОБ
  • Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ / ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависимостСй, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, слСдуСт:

  • ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Pipfile.lock ΠΈΠ· рСпозитория ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² .gitignore

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡ с tox (сокрытиС usedevelop )

Если tox.ini содСрТит Π² своСм commands записи Ρ€Π°Π·Π΄Π΅Π»Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ:

  • pipenv install
  • pipenv install --dev
  • pipenv lock

это часто ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ:

  • pipenv install устанавливаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ саму Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΈ tox (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Ρ‚ΠΎΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ это. Помимо двуличия, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ usedevelop=True ΠΈ usedevelop=False Π² tox.ini ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Pipenv ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ (ΠΈ tox.ini допускаСт различия Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах).

Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, слСдуСт:

  • Π²ΠΎΠ·Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ использования pipenv Π² tox.ini . Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ запросы tox.ini

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: сбой сборки, Ссли pipenv Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

pipenv находится Π² стадии интСнсивной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ломаСтся. Если такая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π²Π°ΡˆΡƒ сборку CI, Π΅ΡΡ‚ΡŒ сбой, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ, Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ инструмСнты (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π·Ρ€Π΅Π»Ρ‹Π΅).

Π§Ρ‚ΠΎΠ±Ρ‹ этого Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ, слСдуСт:

  • ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ Π΄Π²Π°ΠΆΠ΄Ρ‹, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ pipenv Π² сцСнарий сборки CI, tox.ini ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ мСсто. Π’Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚ этого? МоТно Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ инструмСнтария?
  • Π½Π΅ добавляйтС Π΅Π³ΠΎ Β«Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ сообраТСниям бСзопасности» ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ «всС Π΄Π΅Π»Π°ΡŽΡ‚Β».

РСзюмС

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ вопросы ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€ΠΎΠ»ΠΈ pipenv Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ python:

  • ΠšΠ°ΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ pipenv самом Π΄Π΅Π»Π΅ приносит A: Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ управлСния Virtualenv.
  • Каков ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования для pipenv ? О: УправляйтС virtualenv.
  • Π”ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ ΠΎΠ½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ? A: НСт.

Π”Π°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΅Ρ‰Π΅ нСсколько Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ хитростСй.

pipenv Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ бСзопасности Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ

НС ΠΏΡ€ΠΎΡ‚Π°Π»ΠΊΠΈΠ²Π°ΠΉΡ‚Π΅ это Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это Π΄Π΅Π»Π°ΡŽΡ‚ всС ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ бСзопасности. Π­Ρ‚ΠΎ вас Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΡƒΠ΅Ρ‚.

Π—Π°Ρ‰ΠΈΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… (ΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Ρ…) зависимостСй Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ мСсто Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌ этапС Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Pipfile , Pipfile.lock ΠΈ .env Π²Π½Π΅ рСпозитория

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² .gitignore .

Pipfile Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ»ΠΈ всС трСбования ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² вашСм setup.py . А Ρ„Π°ΠΉΠ» .env вСроятно, содСрТит Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая Π½Π΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ Ρ€Π°Π·Π³Π»Π°ΡˆΠ΅Π½ΠΈΡŽ.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π²Π½Π΅ рСпозитория ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ со сборками CI ΠΏΡ€ΠΈ использовании pipenv Π² нСподходящих ситуациях.

pipenv ΠΊΠ°ΠΊ Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

pipenv ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΊΠ°ΠΊ инструмСнт управлСния virtualenv.

Π£Π»ΠΎΠ²ΠΊΠ° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ быстро Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ваши (частныС) Ρ„Π°ΠΉΠ»Ρ‹, связанныС с pipenv , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

$ cd <project_repository>
$ # your library will bring the dependencies (via install_requires in setup.py)
$ pipenv install -e .   
$ # add more dev tools you preffer 
$ pipenv install --dev ipython pdbpp
$ # start hacking
$ pipenv shell
...

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ .env file, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ настройки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅: Π½Π΅ допускайтС использования pipenv Π² Π²Π°ΡˆΠΈΡ… сборках CI, ΠΈ ваша Тизнь станСт ΠΏΡ€ΠΎΡ‰Π΅.

Π£Π»ΠΎΠ²ΠΊΠ°: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ setup.py для объявлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… зависимостСй

Π’ вашСм setup.py ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» extras_requires :

from setuptools import setup

setup(
    name='mypackage',
    ....,
    install_requires=["jinja2", "simplejson"],
    extras_require={
        'tests': ['pytest', 'pyyaml'],
        'pg': ['psycopg2'],
    },
    ....
)

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ всС зависимости, заявлСнныС для tests extra:

$ pipenv install -e .[tests]

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ зависимости install_requires .

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ позволяСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ зависимости Π½Π° Ρ€Π°Π·Π΄Π΅Π»Ρ‹ default ΠΈ dev, Π½ΠΎ это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… сцСнариях.

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@ Moritz90 НСсколько списков рассылки Python Π±Ρ‹Π»ΠΈ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°ΠΌΠΈ для провСдСния этого обсуТдСния.

pypa-dev являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅

python-ideas - это мСсто, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΈ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстСн всСму сообщСству Python. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ довСсти это Π΄ΠΎ уровня PEP (Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², я Π΄ΡƒΠΌΠ°ΡŽ).

ВсС 74 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ впСчатляСт, спасибо Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅

/ cc @uranusjr @jtratner @ncoghlan

НСкоторыС ссылки Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ maya :

  • kennethreitz / maya # 138 (RemovePipfile.lock ΠΈΠ· рСпозитория)
  • kennethreitz / maya # 139 (ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ pipenv Π² tox.ini ...)
  • kennethreitz / maya # 145 (ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ pendulum>=1.0 Π² setup.py: вСрсия Π±Ρ‹Π»Π° Π² Pipfile, Π½ΠΎ отсутствовала Π² setup.py)
  • kennethreitz / maya # 143 (PR, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° pipenv сломала вСсь ΠΏΡ€ΠΎΠ±Π΅Π³ Travis)
  • kennethreitz / maya # 144 (использованиС PR Refactor pipenv Π² соотвСтствии с ΠΏΠΎΠ»ΡƒΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ)

МнС это Ρ‚ΠΎΠΆΠ΅ нравится. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ стоит Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ это Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Pipenv ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π² Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Python Packaging .

БлСдствиСм Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ совСта, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, являСтся Β«ΠΎΡ‚ΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… / воспроизводимых построСний CIΒ», Ρ‡Ρ‚ΠΎ каТСтся ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ большим Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ.

Π§Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚Π΅ Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, которая всС Π΅Ρ‰Π΅ допускаСт Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ?

@ tsiq-oliverc Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅ΡŽΡ‚ мСсто, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ построСно.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python:

  • сборки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ основаны Π½Π° Pipfile.lock
  • ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ контСкст выполнСния (комбинация ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Python ΠΈ ОБ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Pipfile.lock Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ абстрактных зависимостСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² Pipfile
  • Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ экзСмпляры Pipfile.lock ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ автоматичСская сборка Pipfile.lock Π²ΠΎ врСмя сборки CI Π½Π΅ добавляСт Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌΠ°.

Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… усилий. И Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ установлСна ​​в Π΄Ρ€ΡƒΠ³ΠΎΠΌ контСкстС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· нСдСлю ΠΏΡ€ΠΈ стандартной установкС появятся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ зависимости ΠΈΠ»ΠΈ Π΄Π²Π΅), ΠΈ которая Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹ использовали Pipfile.lock , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ.

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ строгиС зависимости.

Если Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° для получСния Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сборок для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python - ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Π΅Π΅.

@vlcinsky - Если ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ вашСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии зависимостСй ΠΈ Ρ‚. Π΄., Ρ‚ΠΎΠ³Π΄Π° это Π½Π΅ Π² вашСй власти. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я согласСн, Ρ‡Ρ‚ΠΎ Ρƒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ способа ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим.

Но Ρ†Π΅Π»ΡŒ здСсь, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡƒ, Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС. Π’ частности, я Π±Ρ‹ Π²ΠΈΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π΅Π»ΠΈ для ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ эквивалСнтны):

  1. Если Π²Ρ‹ запуститС свой CI Π΄Π²Π°ΠΆΠ΄Ρ‹, Π²Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (нСсмотря Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠ΅Ρ‚ΡŒΡŽ!).
  2. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ локально Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ (ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ) ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚Π΅ Π½Π° CI, Π΄Π°ΠΆΠ΅ Ссли это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ запуск Docker / etc. локально.
  3. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ своим потрСбитСлям: «Моя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Π΅Π΄Π΅Ρ‚ сСбя Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ с вСрсиями зависимостСй X, Y, ZΒ».

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈΠ· этих Ρ‚Ρ€Π΅Ρ… Π½Π΅ выполняСтся, ΠΌΠ½Π΅ каТСтся, Ρ‡Ρ‚ΠΎ это ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽ качСства.

Π˜Ρ‚Π°ΠΊ, Π΄Π°, я Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Python A, B ΠΈ C для своСго потрСбитСля, ΠΈ ΠΎΠ½ΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя достаточно ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (ΠΈ Ρ‚. Π”.) НС Ρ€Π°Π·Ρ€Π΅Π·Π°Π» Π΅Π³ΠΎ, Ρ‚ΠΎΠ³Π΄Π° Ρƒ вас Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½ΠΈ).

Однако я нСдостаточно использовал Pipenv, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, насколько просто это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π’ настоящСС врСмя я Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния Pipfile s Π² нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² для систСмы CI.

МнС Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° зависимостСй (+ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅) для соблюдСния ΠΎΠ±Ρ‰Π΅ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» бСзопасности, ΠΈ Π² настоящСС врСмя ΠΌΠ½Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ вСрсии Python, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°. И Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ pipenv ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ настройку локальной срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ virtualenv, являСтся приятным ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом.

И Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ установлСна ​​в Π΄Ρ€ΡƒΠ³ΠΎΠΌ контСкстС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· нСдСлю ΠΏΡ€ΠΈ стандартной установкС появятся ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ зависимости ΠΈΠ»ΠΈ Π΄Π²Π΅), ΠΈ которая Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ Π²Ρ‹ использовали Pipfile.lock , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ устарСло.

Π­Ρ‚ΠΎ Π½Π΅ всСгда Π²Π΅Ρ€Π½ΠΎ. Π’ ΠΌΠΈΡ€Π΅ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρƒ вас ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ спСцифичСскиС срСды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° бСзопасности Π² зависимости ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ обновлСнию вашСго ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π° Π½Π΅ ΠΊ обновлСнию зависимости ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

(Π”Π°, я Π³ΠΎΠ²ΠΎΡ€ΡŽ ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π° Π½Π΅ ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ...)

@ Moritz90 ваш сцСнарий ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС, ΠΈ Ρ‚Π°ΠΌ pipenv ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ дСтСрминированная срСда.

МоС описаниС Π½Π°Ρ†Π΅Π»Π΅Π½ΠΎ Π½Π° ΠΎΠ±Ρ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ flask , request , maya ΠΈ Ρ‚. Π”., Π“Π΄Π΅ контСкст Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ΠΉ. ΠŸΡ‹Ρ‚Π°ΡΡΡŒ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ Π²Π΅Ρ‰Π΅ΠΉ Π² maya я расстроился, ΡƒΠ·Π½Π°Π², Ρ‡Ρ‚ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях использованиС pipenv Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ скрываСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ), Π½Π΅ обСспСчивая ΠΏΡ€ΠΈ этом ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ΅. Ρ†Π΅Π½ΠΈΡ‚ΡŒ.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сборок - это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Ρ‚. А Ссли сдСлаСтС Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π·Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - ΠΈ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ.

Π― Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· случаСв, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сборки Π±Ρ‹Π»ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ. Если Π²Ρ‹ Π½Π΅ закрСпляСтС свои зависимости с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ == , Π²Ρ‹ ΠΎΠ±ΡΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… вСрсий ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ОбновлСниС зависимости, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π΅Π΅ сборку Π½Π° CI, Π½Π° самом Π΄Π΅Π»Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ зависимости (управляСмыС Pipenv) ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‚ это. По-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ этого Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅.

@uranusjr - ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ. Π― согласСн с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Β«Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… построСний», Ρ‚ΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ совСт Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ смысл. ЀактичСски, это ΠΏΠΎΡ‡Ρ‚ΠΈ логичСская ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ, ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎ: «Если Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнт ( pipenv ), Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ - Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки» πŸ˜„.

Но это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ†Π΅Π»ΡŒ Π² Ρ†Π΅Π»ΠΎΠΌ.

@ tsiq-oliverc Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ области видимости - ΠΎΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ обсуТдСниС. Π― Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅: Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ CI Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² тСстируСмой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.

Если ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Pipenv.lock , создаСм virtualenv Π½Π° Π΅Π³ΠΎ основС ΠΈ запускаСм CI-тСст Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, - установили ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ зависимости. Если Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΊΠ°ΠΊ-Ρ‚ΠΎ сломана Π² этом ΠΏΠ»Π°Π½Π΅ - прСдустановлСнноС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ скроСт эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

МнС каТСтся Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Ρ‡Π΅ΠΌ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ запуск CI. Если Π΅ΡΡ‚ΡŒ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСст Π·Π° частным индСксом pypi, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ), Ρƒ мСня Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ Ссли Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, Ρƒ мСня Π΅ΡΡ‚ΡŒ свои ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹.

НС ΠΏΠΎΠΉΠΌΠΈΡ‚Π΅ мСня Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ: Π½Π΅Ρ‚ ТСлания Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки, я Ρ…ΠΎΡ‡Ρƒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ сборки CI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ°Ρ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

@vlcinsky ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, я просто Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ обновлСнная докумСнтация Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π΅Π³ΠΎ. ВСкущая докумСнтация ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ компромиссы:

Для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ абстрактныС зависимости Ρ‡Π΅Ρ€Π΅Π· install_requires Π² setup.py. [...]
Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ зависимости ΠΈ мСсто ΠΈΡ… получСния Π² Pipfile ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ этот Ρ„Π°ΠΉΠ» для обновлСния Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… зависимостСй Π² Pipfile.lock. [...]
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Pipfile ΠΈ pipenv ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для опрСдСлСния срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ»ΠΈ тСстирования.
И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ Ρ‚Π°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ.

(Π’Ρ‹Π΄Π΅Π»ΠΈΠ» Ρ‚Ρƒ Ρ‡Π°ΡΡ‚ΡŒ, которая ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° Π² ΠΌΠΎΠ΅ΠΌ случаС.)

Π― просто Ρ…ΠΎΡ‡Ρƒ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ваш исходный пост содСрТит слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰ΠΈΡ… заявлСний Π±Π΅Π· ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ отвСтствСнности, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π½Π° PyPI.

@ Moritz90 ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн. Π― пытался Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ этот фокус, Π½ΠΎ ΠΌΠΎΠ³Ρƒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ.

@ Moritz90 Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ записку, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ ваш ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

@vlcinsky - Π’ этом Π΅ΡΡ‚ΡŒ смысл. Π― понимаю, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ явно Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки, Π½ΠΎ я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ эквивалСнтно Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ (Ρ‚. Π•. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ зависимостСй вашСго восходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°).

ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ вслух: ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эти Π΄Π²Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹Π΅ Ρ†Π΅Π»ΠΈ? Одна ΠΈΠ· возмоТностСй - ΠΈΠΌΠ΅Ρ‚ΡŒ двухэтапный процСсс CI:

  1. ДСтСрминированная Ρ„Π°Π·Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Pipfile.lock Π² вашСм Ρ€Π΅ΠΏΠΎ, поэтому ΠΎΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ воспроизводимо.
  2. НСдСтСрминированная Ρ„Π°Π·Π°. ЗапускаСт pipenv update Π° Π·Π°Ρ‚Π΅ΠΌ запускаСт тСсты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСднюю ΠΈΠ· всСх Π²Π°ΡˆΠΈΡ… зависимостСй (Ρ‡Ρ‚ΠΎ Π² основном совпадаСт с ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π±Π΅Π· Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, я Π΄ΡƒΠΌΠ°ΡŽ?).

@ tsiq-oliverc Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки, я Π±Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π» ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ настройкС:

  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ pypi: Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, создавая Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ кСша индСкса pypi (ΠΊΠ°ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅)
  • Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ: использованиС кСша pypi, Π½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Π½ΠΈΠ΅ pipenv

ИспользованиС pipenv для установки Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ установкС самой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ отличаСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ΄, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ pypi

$ git clone <repo_url> <project_dir>
$ cd <project_dir>
$ pip install pipenv
$ $ # clean pypi cache and make it ready to cache somehow - not described here
$ pipenv install -e .[test]
$ # if we need extra testing packages in pipenv
$ pipenv install <extra_test_packages>
$ # record current requirements expressed in `Pipfile.lock`
$ pipenv lock
$ # if needed, record the `Pipfile.lock` somewhere

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • Pipfile.lock Π²ΠΈΠ΄Π΅ записанных зависимостСй (ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π»Π΅Π³ΠΊΠΎ воспроизвСсти срСду)
  • ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ кСш pypi

Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

Π΅ΡΡ‚ΡŒ Ρ„Π°Π·Ρ‹:

  • Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ срСду для ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ использования tox , pip ΠΈ Ρ‚. Π΄., ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ наш Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ кСш pypi
  • Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ тСсты CI (ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования pipenv )

Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° протСстирована Π² Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС
  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° протСстирована Π² Ρ‚.Ρ‡. это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСбя ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ
  • Pipfile.lock записываСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ pypi, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались для установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для воспроизвСдСния окруТСния Π½Π° сайтС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.
  • адаптация ΠΊ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ Π½Π° (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, внСшнСм) pypi проста (пСрСзапуститС Π·Π°Π΄Π°Π½ΠΈΠ΅ Β«build pypi cache job)Β» ΠΈ выполняСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (содСрТимоС pypi записываСтся, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ…ΡΡˆΠΈ)

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ прСимущСство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эта установка Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Pipfile ΠΈΠ»ΠΈ Pipfile.lock . Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСстов Π² Ρ€Π°Π·Π½Ρ‹Ρ… контСкстах всСгда ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ ( Pipfile.lock всСгда пСрСстраиваСтся Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС).

Π§Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ (ΠΈ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ)

КСш pypi - это Ρ‡Π°ΡΡ‚ΡŒ, которая Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ исслСдования. Π”ΡƒΠΌΠ°ΡŽ, простого ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π±ΡƒΠ΄Π΅Ρ‚ достаточно, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, pipenv ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ² ΠΏΠΎΠΌΠΎΡ‡ΡŒ с этим. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β„–1731 - это Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ.

Как ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ зависимостСй, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½Π°ΡˆΠΈΡ… собствСнных тСстов ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ бСря извСстныС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ оТидая Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π°. Для этого ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ pytest-pypi .

ΠžΡ‡Π΅Π½ΡŒ нравится ΠΎΠΆΠΈΠ²Π»Π΅Π½Π½ΠΎΠ΅ обсуТдСниС этой Ρ‚Π΅ΠΌΡ‹. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ нюанс Π²Π°ΠΆΠ΅Π½, ΠΈ Π²Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ извСстныС, Ρ‚Π°ΠΊ ΠΈ Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ зависимости.

Π²Ρ‹ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ извСстныС, Ρ‚Π°ΠΊ ΠΈ Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ зависимости

Π― ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽ это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ идСя - всСгда ΠΈΠΌΠ΅Ρ‚ΡŒ явноС Β«Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ исправноС состояниС» для воспроизводимых сборок ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ Π½Π° случай, Ссли ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ сломаСт, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ работоспособности Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠΈΠ½ΠΎΡ€Π½Ρ‹Ρ… вСрсий / исправлСний ошибок.

(По ΠΌΠΎΠ΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ мнСнию, идСальной ситуациСй Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² устанавливаСт послСдниС второстСпСнныС вСрсии ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ всСгда ΠΌΠΎΠ³Π»ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ вСрсии зависимостСй, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ протСстированы, Π½ΠΎ я понимаю, Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ спорноС ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° сСмвСром.)

@ Moritz90 @techalchemy @uranusjr @ tsiq-oliverc

Π’ΠΎΡ‚ ΠΌΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ обсуТдСния.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

МногиС контСксты выполнСния - ΠΊΡ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» (Ρ‹) Pipfile.lock ?

КаТдая поддСрТиваСмая ОБ ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python вносят свой Π²ΠΊΠ»Π°Π΄ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… контСкстов выполнСния.

НапримСр, Flask ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²ΠΈΠ΄Π½Ρ‹ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ CI):

  • ОБ Windows (Python 2.7 ΠΈ Python 3.6)
  • Linux (python 2.7, 3.4, 3.5, 3.6, nightly, pypi)
  • OSX (py - Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π΅Ρ‰Π΅ вСрсии)

Он создаСт 9 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… контСкстов выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ контСкст выполнСния ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Pipfile.lock .

ΠšΡ‚ΠΎ ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ?

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

  • Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (НИ Π’ ΠšΠžΠ•Πœ БЛУЧАЕ)
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ Pipfile.lock для основной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (ΠΊΠ°ΠΊΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?)
  • ΠΠ²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ созданиС Ρ‡Π΅Ρ€Π΅Π· CI (ДА)

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΏΡƒΡΡ‚ΡŒ CI сгСнСрируСт Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pipenv install -e . . НС Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Ρ€Π΅ΠΏΠΎ, ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Pipfile.lock Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… сборок.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½ΡƒΠΆΠ½Π° прСдсказуСмая срСда

ΠŸΡ€ΠΈ устранСнии ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ зависимостСй ΠΎΡ‚ pypi, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ простоС срСдство для воспроизвСдСния срСды ΠΈΠ· Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ тСста.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

  • для ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² измСнСния зависимостСй pypi Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π΄ΠΊΠΈ, Ρ‡Ρ‚ΠΎ это Π½Π΅ настоящая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°
  • Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ срСду ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Pipfile.lock ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pipenv install -e . Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт pipenv lock .
  • для Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ срСды ΠΈΠ· Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ тСста Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Pipfile.lock ΠΈΠ· Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ тСста.
  • Π·Π°Π΄Π°Ρ‡Π°: ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Pipfile.lock Π² tox.ini .

CI Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ сломанный setup.py

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° setup.py ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π° (отсутствуСт Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² install_requires , отсутствуСт спСцификатор вСрсии ΠΈ Ρ‚. Π”.), И тСст CI Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ​​проблСму (ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установки ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… зависимостСй).

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

  • довСряйтС pipenv install -e . Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ простой установкС (Π² настоящСС врСмя с этим Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹).
  • запуститС простой тСст установки (Π±Π΅Π· pipenv ) ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сравнитС, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ pip freeze являСтся подмноТСством Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ установлСно pipenv .

ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ зависимости pypi ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ, CI Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ³ΠΎΠ½ΠΈ

НСкотороС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ зависимостСй ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ Π΅Π³ΠΎ. CI Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΠ°Π· ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

  • хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ тСст Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΠΎΠΉ вСрсии
  • Ссли CI всСгда Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹Π΅ Pipfile.lock , это Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ всС Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅)

Π Π΅ΠΆΠΈΠΌΡ‹ CI для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Π’ΠΎ всСх ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… я старался ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ хранСния Ρ„Π°ΠΉΠ»ΠΎΠ² pipenv Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, избавляя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ нСобходимости ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ этот Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ слоТный ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» (автоматизация !!!).

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΎΠ΅Π³ΠΎ исходного тСкста, 2-ΠΉ ΠΈ 3-ΠΉ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ pipenv Π² сцСнариях CI.

Π Π΅ΠΆΠΈΠΌ: Π‘Π΅Π³ΠΈ, ЀоррСст, Π‘Π΅Π³ΠΈ!

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ с мСньшим количСством зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ часто ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΎΡΡ‚ΠΎ запуститС, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Π² эру pipenv ΠΈ Π½Π΅ услоТняйтС Π·Π°Π΄Π°Ρ‡Ρƒ.

Π Π΅Π΄ΠΊΠΈΠ΅ случаи, ΠΊΠΎΠ³Π΄Π° зависимости ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°ΡŽΡ‚ услоТнСния CI.

Π Π΅ΠΆΠΈΠΌ: созданиС ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° запускаСтся тСст CI, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Pipfile.lock ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ описываСт срСду, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Pipfile.lock станСт Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ CI.

Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Pipfile.lock ΠΈΠ· сломанной сборки, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ локально ΠΈ провСсти тСстированиС ΠΈ исправлСниС.

Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pipfile.lock ΠΈΠ· послСднСй ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборки.

Π Π΅ΠΆΠΈΠΌ: Π›Π΅Π΄Π½ΠΈΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄

Когда ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ зависимостСй являСтся Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, CI Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Pipfile.lock ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° (мСсяц?).

Π­Ρ‚ΠΎ услоТняСт настройку CI, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… задания (ΠΎΠ΄Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Pipfile.lock , Π΄Ρ€ΡƒΠ³ΠΎΠ΅ примСняСт Π΅Π³ΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² тСстах).

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: Pipfile.lock Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, setup.py измСняСт зависимости.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для Β«Π›Π΅Π΄Π½ΠΈΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π°Β» трСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠ° Β«Π±Π΅Π»ΠΊΠ°Β», которая ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ статус ΠΈ провСряСт Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ вСрсии.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ слово

Как Π²ΠΈΠ΄Π½ΠΎ, Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ растут Ρ€Π΅ΠΆΠΈΠΌ Π·Π° Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ.

МоС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹:

  • Π½Π°Ρ‡Π°Ρ‚ΡŒ просто (Β«Π‘Π΅Π³ΠΈ, ЀоррСст, Π‘Π΅Π³ΠΈΒ»). Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.
  • Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ становится слишком слоТным ΠΈΠ·-Π·Π° измСнСния зависимостСй, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊ Β«Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΒ». Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Π² мСстной срСдС.
  • Ссли Π΄Π΅Π»Π° обстоят совсСм ΠΏΠ»ΠΎΡ…ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ Β«Π›Π΅Π΄Π½ΠΈΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Β». Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ (Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ) Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ.

Всякая ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ стоит.

Если Ρ†Π΅Π»ΡŒ здСсь - ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Ρ‚ΠΎ, чСстно говоря, каТСтся бСзотвСтствСнным Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ Β«Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ (воспроизводимыС сборки) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΠΎΠΊΠ° Ρƒ вас Π½Π΅ останСтся Π²Ρ‹Π±ΠΎΡ€Π°Β».

@vlcinsky Под Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Β«Π Π΅ΠΆΠΈΠΌ: ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΒ» ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ послСдний ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ Pipfile.lock всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, объявив Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ ДТСнкинса. Π‘ этим ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ эту настройку для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Как ΠΈ @ tsiq-oliverc, я Π±Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ.

Π§Π΅ΠΌ большС я Π΄ΡƒΠΌΠ°ΡŽ ΠΎΠ± этом, Ρ‚Π΅ΠΌ большС Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, Ρ‡Ρ‚ΠΎ эта докумСнтация станСт Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ использованиС pipenv для сборок CI - отличная идСя, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

@ tsiq-oliverc ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² python находятся Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Β«Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ЀоррСст, Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΒ». Π― ΠΏΠΎΠΌΠΎΠ³ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ· этих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ввСсти tox ΠΈ pytest , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я чувствовал, Ρ‡Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ качСству ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρƒ мСня Π±Ρ‹Π»ΠΎ довольно Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт, ΠΈ ΠΌΠ½Π΅ интСрСсно, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv Π² ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ качСству. Π― Ρ…ΠΎΡ‡Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Ρ‹ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎ Π±Ρ‹ я сказал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Flask?

  1. Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ (воспроизводимыС сборки) ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΠΎΠΊΠ° Ρƒ вас Π½Π΅ останСтся Π²Ρ‹Π±ΠΎΡ€Π°?
  2. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 9 Ρ„Π°ΠΉΠ»ΠΎΠ² Pipfile.lock ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΈΡ… обновлСния?
  3. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ CI-скриптов для Travis ΠΈ Appveyor, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² Π΄Π²Π° этапа послС Ρ€Π΅ΠΆΠΈΠΌΠ° Ice Age?
  4. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ сцСнарии CI для Travis ΠΈ Appveyor, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Pipfile.lock для случаСв, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ воспроизвСсти Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ тСст Π½Π° своСм собствСнном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅?
  5. Π±Π΅Π· ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΊΡ€ΠΎΠΌΠ΅ Β«Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Π·Π° FlaskΒ».

ЦСль - Π½Π°ΠΉΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Если ΠΎΠ½ заканчиваСтся Π½Π° doc - Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ссли Π½Π΅Ρ‚ - Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

@vlcinsky Π― Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ (1) ΠΈ (4) Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ рСкомСндациями для Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π₯отя Π±Π΅Π· ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Pipfile.lock Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π·Π½Π°Ρ‚ΡŒ вСрсии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² сборкС Π·Π°Ρ€Π°Π½Π΅Π΅ (Ρ‡Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… срСд), Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ воспроизводимый Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли сгСнСрируСтС ΠΈ Π·Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π²ΠΎ врСмя сборки.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ : вСрсия tl; dr ΠΌΠΎΠ΅ΠΉ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚:

  • ВсСгда провСряйтС Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… сборок, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. pipenv ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ Π² достиТСнии этой Ρ†Π΅Π»ΠΈ.
  • Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, зафиксируйтС Pipfile.lock Π² своСм Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ для развСртывания. (Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ описано Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.)
  • Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, сгСнСрируйтС Pipfile.lock Π½Π° Π»Π΅Ρ‚Ρƒ Π² своСй CI-сборкС ΠΈ Π·Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π΅ для дальнСйшСго использования.
  • Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС с ограничСниями, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ количСство Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡ… Π² своих сборках CI.

(ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² самой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ большС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².)

@ Moritz90 Π― ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΒ», ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ.

Re (1): Π»Π΅Π³ΠΊΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Π½Π΅ вдаваясь Π² подробности.

По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ (4): Π΄Π°, я Ρ‚ΠΎΠΆΠ΅ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΒ» - Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ. Но Π² случаС с Flask я Π½Π΅ Ρ€Π΅ΡˆΡƒΡΡŒ (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚).

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Pipfile.lock Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС: Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ (ΠΏΠΎΠ»Ρƒ) Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ автоматичСски. Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС Π²Ρ‹ Π½Π΅ устанавливаСтС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· общСдоступного pypi, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ частный, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ( devpi-server прСдоставляСт ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ услуги Π² этом - нСсколько индСксов, контролируСмая Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², утвСрТдСния для Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Ρ‚. Π΄.). Если процСсс сборки Pipfile.lock выполняСтся Π² Ρ‚Π°ΠΊΠΎΠΉ срСдС, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ, поэтому, Ссли новая вСрсия Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΌ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΡ‚Π°Ρ‚ΡŒ ΠΈ ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Π΅Π΅. ПослС сборки CI Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π»ΠΎΠΌΠ°Π΅Ρ‚. А с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pipenv check ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бСзопасности Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°.

Π”ΡƒΠΌΠ°ΡŽ, Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Π±Ρ‹Π» Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ бСзопасным ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ создавал Π΅Π³ΠΎ (ΠΏΠΎΠ»Ρƒ) Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Но ΠΌΠΎΠΈ знания ΠΎ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹.

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΊΠΎΠΌΠ°Π½Π΄Π° pipenv. Π― Ρ€Π°Π·Π΄Π΅Π»ΡΡŽ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ говорится Π² этом тСкстС, это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π»ΡŽΠ±ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ ограничСния Pipfile / pipenv ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот тСкст ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π±Ρ‹Π»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ pipenv.

Π£ мСня Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ:

Для нашСго Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° python, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° нашСм Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ pypi ΠΈ Ρ‚. Π”., И Π΄Π°ΠΆΠ΅ для ΠΌΠΎΠΈΡ… собствСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² python (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, cfgtree , txrwlock , pipenv-to-requirements ) я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ абстрагируСт эти Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Python: PBR.
PBR ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ считываСт requirements.txt Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° распространСния, ΠΈ внСдряСт Π΅Π³ΠΎ Π² install_requires ΠΈΠ· setup.py . Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ просто Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ requirements.txt со свободными объявлСниями зависимостСй. Пока ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Pipfile Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² PBR, я Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv-to-requirements, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ requirements.txt ΠΈΠ· Pipfile Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΎΠ±Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΈ ΠΎΠ±Π° Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ. Π² исходном ΠΊΠΎΠ΄Π΅, ΠΈ PBR ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ выполняСт ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡŽ послС сборки дистрибутива. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv для создания этого requirements.txt

Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π°Π΄ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Pipfile для PBR, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Pipfile (Π° Π½Π΅ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ) ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π² install_requires ΠΊΠ°ΠΊ Π² случаС с requirements.txt .

Π― Π½Π΅ знаю, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ людям (вСрсия ΠΈΠ· истории git, автоматичСская гСнСрация AUTHORS ΠΈ ChangLog).

Но, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², я Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, Ρ‡Ρ‚ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вСрсиями Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ грустно Π½Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ этим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ. Π― ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡŽ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Β«Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉΒ» способ написания соврСмСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python Π² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° "читСрство" Π½Π° всСх трудностях, связанных с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΈ pipenv, Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π° сдСлана, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ счастливы Сю ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π§Π°ΡΡ‚ΡŒ обучСния python, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я даю Π½ΠΎΠ²ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ python Π² своСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя сначала написаниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ python, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ install_requires Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° PBR Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это станСт ΠΏΡ€ΠΎΡ‰Π΅ ( ΠΈ, чСстно говоря, я ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сСмантичСской фиксации pbr для автоматичСского создания ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π° вСрсии semver).

Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для объявлСния зависимостСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с использованиСм ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ инструмСнты, ΠΊΠ°ΠΊ readthedocs ΠΈΠ»ΠΈ pyup (Π΄Π°ΠΆΠ΅ Ссли pyup ΠΈΠΌΠ΅Π΅Ρ‚ большС смысла ΠΏΡ€ΠΈ связывании с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ).

Π― Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊ «стандартный» способ создания ΠΏΠ°ΠΊΠ΅Ρ‚Π° python, Π½Π° самом Π΄Π΅Π»Π΅ это способ Β«OpenStackΒ», Π½ΠΎ я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, ΠΈ Ссли Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚, я Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ ΠΈΡ… ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ мою Ρ‚ΠΎΡ‡ΠΊΡƒ зрСния.

Команда, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅ ΠΎ своСго Ρ€ΠΎΠ΄Π° Ρ€Π°Π·Π΄Π΅Π»Π΅ "сообщСства" Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ? Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠ°ΠΊ я, ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ использования pipenv, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ поддСрТивая ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ pipenv?

PS: Π― ΠΌΠΎΠ³Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ это Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ссли Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°Π³Ρ€ΡΠ·Π½ΡΡ‚ΡŒ эту Π²Π΅Ρ‚ΠΊΡƒ.

@vlcinsky (1) ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ - помСститС свой Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² своС Ρ€Π΅ΠΏΠΎ.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ вмСсто этого ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ: Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ совСт, Ссли этой Π±Π°Π·ΠΎΠ²ΠΎΠΉ стратСгии ΡƒΠΆΠ΅ нСдостаточно. Π­Ρ‚ΠΎ, бСзусловно, ΠΏΡ€Π°Π²Π΄Π°, Π½ΠΎ это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ конкрСтная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, вСроятно, отличаСтся Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ случаС.

Или, говоря Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс CI прСдоставлял.

@gsemet знаСшь Ρ‡Ρ‚ΠΎ? ВсС ΠΌΠΎΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Python, созданныС Π·Π° послСдниС Π΄Π²Π° Π³ΠΎΠ΄Π°, основаны Π½Π° pbr - это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ. И я слСТу Π·Π° вашими ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Pipfile Π² pbr всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ³Ρƒ (нСсколько ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΠΉ, голоса ΠΈ Ρ‚. Π”.).

Π’ случаС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (поиск шаблонов pipenv ΠΈ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² для ΠΎΠ±Ρ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python) я Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ пропустил pbr ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

  • это сдСлало Π±Ρ‹ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ обсуТдСниС Π±ΠΎΠ»Π΅Π΅ слоТным
  • Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ людям Π½Π΅ нравится pbr ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ (Π²Ρ‹ ΠΈΡ… упомянули), ΠΈ это, вСроятно, ΠΎΡ‚Π²Π»Π΅Ρ‡Π΅Ρ‚ обсуТдСниС

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ΄Ρƒ вашСго Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° для Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ pbr. Π― ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΡŽ это.

@ tsiq-oliverc Π²Ρ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ: помСститС свой Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Ρ€Π΅ΠΏΠΎ

Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая ΠΏΠΎΠ±ΡƒΠ΄ΠΈΠ»Π° мСня Π½Π°Ρ‡Π°Ρ‚ΡŒ этот выпуск. Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Ρ‡Π°Π»ΠΎ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ описаниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… случаСв, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Pipfile.lock ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ваши тСсты CI (Π»ΠΈΠ±ΠΎ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ запуск сборки, Π»ΠΈΠ±ΠΎ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹, Π»ΠΈΠ±ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ зависимости. для Π΄Π°Π½Π½ΠΎΠ³ΠΎ контСкста ...).

Если Π²Ρ‹ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΌΠ½Π΅ Ρ€Π΅ΠΏΠΎ, Π³Π΄Π΅ это сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (общая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python), я Π±ΡƒΠ΄Ρƒ счастлив. Или я Π±Ρ‹ продСмонстрировал, ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ риски ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ.

ΠŸΡ€ΠΎΡ…Π»Π°Π΄Π½Ρ‹ΠΉ ! Π― Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽ этот Ρ€Π΅Π·Π°ΠΊ :)

@vlcinsky Π₯ΠΎΡ€ΠΎΡˆΠΎ , Π΄Π°Π²Π°ΠΉΡ‚Π΅ пСрСчислим ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π½Π°ΠΉΠ΄Π΅ΠΌ для Π½ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ πŸ˜„ (я Π½Π΅ знаю Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ высококачСствСнной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Pipenv, Π½ΠΎ это Π² основном ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я Π½Π΅ смотрСл.)

Насколько я ΠΌΠΎΠ³Ρƒ ΡΡƒΠ΄ΠΈΡ‚ΡŒ, это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ симптомы Π² исходном постС:

  • Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ сломанных зависимостСй setup.py. Π—Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° - pipenv install -e . , Π²Π΅Ρ€Π½ΠΎ?
  • Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, зависимости Π±ΡƒΠ΄ΡƒΡ‚ нСдопустимыми для Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий Python ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ОБ. Π― понимаю, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ привСсти ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ это ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅? (Π² контСкстС Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ)
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ... ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π˜Ρ… Π½Π΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ. Они Π΄Π΅Π»Π°ΡŽΡ‚ это, Ссли хотят Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с вСрсиСй n + 1, Π° Π½Π΅ с вСрсиСй n ΠΈΡ… зависимости. Но ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я ΡƒΠΆΠ΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π» Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ, которая обСспСчиваСт Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… ΠΌΠΈΡ€ΠΎΠ².
  • ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡ с Tox. Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ знаю ΠΎ Tox. Но Π΄Π°, использованиС Π΄Π²ΡƒΡ… инструмСнтов ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ для управлСния зависимостями Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ катастрофы. Π― Π±Ρ‹ сказал, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.
  • Pipenv Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Π­Ρ‚ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° - Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ Pipenv (это ΠΌΠΎΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ я Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡŽ свой ΠΎΠ±Ρ€Π°Π· Docker, мою Π²Π΅Ρ€ΡΠΈΡŽ Pip ΠΈ Ρ‚. Π”.)

@ tsiq-oliverc Π”ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ваши ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»ΠΈ мСня, ΠΈ я знаю, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ способствовали Π±ΠΎΠ»Π΅Π΅ высокому ΡƒΡ€ΠΎΠ²Π½ΡŽ воспроизводимости ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ связано с вашим ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ( Pipfile.lock ) Π² Ρ€Π΅ΠΏΠΎ для обСспСчСния повторяСмости:

re Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ сломанных зависимостСй setup.py. . pipenv install -e . ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ, Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½Π΅ использованиС Pipfile.lock , это ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅Π³ΠΎ (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ) создания. Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ сохраняСт Pipenv.lock ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для создания virtualenv ΠΏΠ΅Ρ€Π΅Π΄ установкой ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° присутствуСт.

re Зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Ρ€Π°Π·Π½Ρ‹Ρ… вСрсий python ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ОБ . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ: doit установлСнный для Python 2.7, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ старой вСрсии, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ новая вСрсия ΠΎΡ‚ΠΊΠ°Π·Π°Π»Π°ΡΡŒ ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Python 2.x. Для зависимости watchdog Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, зависящиС ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹: inotify Π² Linux, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅ Π² Windows, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅ Π² OSX. Мой Π±Ρ‹Π²ΡˆΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»: Β«Π­Ρ‚ΠΎΠ³ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ случится», ΠΈ Π² 50% случаСв это происходило Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 2 нСдСль. Π­Ρ‚ΠΎ Π½Π΅ Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для сцСнариСв CI.

re Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ .. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ с 15 участниками. Π’Π°ΠΊ Π»Π΅Π³ΠΊΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΎ Ρ€Π΅Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Pipfile.lock Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠΌ ΠΈΠ»ΠΈ ΡƒΡΡ‚Π°Π²ΡˆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ядра. НапримСр, Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ maya мСня попросили Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Pipfile.lock ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² setup.py Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​новая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ? ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ я ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»? Обновил Π»ΠΈ я Π΅Π³ΠΎ для всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… контСкстов выполнСния? ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π΅Ρ‚, Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π½Π΅Ρ‚. Π’ любом случаС, спасибо Π·Π° вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΎΠ½ΠΎ Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ»ΠΎ мСня Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, описанноС рядом с вашим ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ).

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Π°Ρ конкурСнция с tox : Tox позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… сСрвСров ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ тСстов Π² Π½ΠΈΡ…. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ tox.ini опрСдСляСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для python 2.7, 3.4, 3.5, 3.6 ΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹, ΠΈ позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ тСстов. УстановлСн powertool ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… тСстировщиков. pipenv Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этой Ρ†Π΅Π»ΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ установкС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС я послСдовал Π²Π°ΡˆΠ΅ΠΌΡƒ совСту ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ инструмСнт (tox) вмСсто pipenv Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

re Pipenv Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прискорбно. Π£ мСня Π±Ρ‹Π» тСст CI (Π½Π° основС tox), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° localhost, Π½ΠΎ ΠΏΡ€ΠΈ запускС Ρ‡Π΅Ρ€Π΅Π· Travis ΠΎΠ½ Π½Π΅ удался ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ pipenv . Если я Ρ…ΠΎΡ‡Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сСйчас, Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ΠΎ исправлСниС. Но Ρ‚Π°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ - ΠΏΠΎΠ΄ΠΎΠΆΠ΄Ρƒ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части ΠΌΠΎΠ΅Π³ΠΎ исходного сообщСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹, ΠΊΠ°ΠΊ каТСтся, использованиС pipenv Π² сцСнариях CI ΠΈΠΌΠ΅Π΅Ρ‚ своС ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½ΠΎΠ΅ мСсто ("Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅" ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ virtualenv для Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ дальнСйшСго использования).

@ tsiq-oliverc Π₯отя ΠΌΠ½Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ тСстировании ΠΊΠ°ΠΊ Β«Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ…Β», Ρ‚Π°ΠΊ ΠΈ послСдних вСрсий, ΠΌΠ½Π΅ всС Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΎΠΏΡ€Π°Π²Π΄Ρ‹Π²Π°Ρ‚ΡŒ усилия, Ρ‡Π΅ΠΌ большС я Π΄ΡƒΠΌΠ°ΡŽ ΠΎΠ± этом. Π― Π΄ΡƒΠΌΠ°ΡŽ, Π²Π°ΠΌ слСдуСт Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΠ΄Π½ΠΎ, Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π° Π½Π΅ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

ЕдинствСнноС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅, - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ сразу ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Π±Ρ‹Π» Π»ΠΈ сбой Π²Ρ‹Π·Π²Π°Π½ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ зависимости ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°. Но Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅, просто дСлая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ (ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… зависимостСй) ΠΈΠ»ΠΈ ΠΏΡ‹Ρ‚Π°ΡΡΡŒ воспроизвСсти ΠΎΡˆΠΈΠ±ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ послСднСго Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, созданного ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ сборкой (ΠΊΠΎΠ³Π΄Π° всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ послСдниС вСрсии). А Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… срСдах Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ "просто ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ" ...

@vlcinsky Π₯отя я согласСн с вашим ΠΎΠ±Ρ‰ΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΎ различиях ΠΌΠ΅ΠΆΠ΄Ρƒ срСдами, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Β«ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΒ» Π·Π²ΡƒΡ‡ΠΈΡ‚ для мСня ΠΊΠ°ΠΊ соломинка. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π²Ρ‹ смоТСтС ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ срСдами.

Один ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», - это ΠΊΠ°ΠΊ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ со случаСм, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ ΠΎΠ±ΠΎΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Π½Ρ‹Ρ… срСдах ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои зависимости. Π― Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ знаю ΠΎ tox ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ сущСствуСт, Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΊΠ»Π΅Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ tox ΠΈ pipenv это ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

@ Moritz90

ВстрСча с соломСнником

Π§Ρ‚ΠΎ касаСтся слишком большого количСства Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Pipfile.lock Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… Π² Ρ€ΠΎΠ»ΠΈ соломСнного Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° (Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊ ΠΌΠΎΠ΅ΠΌΡƒ полю):

Колба

Π― взял ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ flask (считая Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π·Ρ€Π΅Π»Ρ‹ΠΌ) ΠΈ запустил tox-тСсты:

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ список протСстированных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ локально Π² Linux, ΡƒΠΌΠ½ΠΎΠΆΡŒΡ‚Π΅ Π΅Π³ΠΎ Π½Π° 3, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Windows ΠΈ OSX Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ тСстов, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ срСдам).

На ΠΎΠ΄Π½ΠΎΠΉ ОБ выполняСтся 16 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… тСстовых ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠ², 5 ΠΈΠ· Π½ΠΈΡ… Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈΡΡŒ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρƒ мСня Π½Π΅ установлСны (это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ), ΠΎΠ΄ΠΈΠ½ связан со сборкой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (для этого трСбуСтся нСвозмоТная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°), Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ - с ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ΠΌ (Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ):

  coverage-report: commands succeeded
  docs-html: commands succeeded
  py27-devel: commands succeeded
  py27-lowest: commands succeeded
  py27-simplejson: commands succeeded
  py27: commands succeeded
  py35: commands succeeded
  py36-devel: commands succeeded
  py36-lowest: commands succeeded
  py36-simplejson: commands succeeded
  py36: commands succeeded
ERROR:   py34: InterpreterNotFound: python3.4
ERROR:   pypy-devel: InterpreterNotFound: pypy
ERROR:   pypy-lowest: InterpreterNotFound: pypy
ERROR:   pypy-simplejson: InterpreterNotFound: pypy
ERROR:   pypy: InterpreterNotFound: pypy

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· созданных Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² я создал requirements.txt Ρ„Π°ΠΉΠ» pip freeze > {venv_name}.txt

Π—Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ…Π΅ΡˆΠΈ для Ρ„Π°ΠΉΠ»ΠΎΠ², отсортированныС ΠΏΠΎ Ρ…Π΅Ρˆ-значСниям, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ сгруппированы. А Π²ΠΎΡ‚ ΠΈ соломинка:

b231a4cc8f30e3fd1ca0bfb0397c4918f5ab5ec3e56575c15920809705eb815e  py35.txt
b231a4cc8f30e3fd1ca0bfb0397c4918f5ab5ec3e56575c15920809705eb815e  py36.txt
cdf69aa2a87ffd0291ea65265a7714cc8c417805d613701af7b22c8ff2b5c0e4  py27-devel.txt
dfe27df6451f10a825f4a82dfe5bd58bd91c7e515240e1b102ffe46b4c358cdf  py36-simplejson.txt
e48cd24ea944fc9d8472d989ef0094bf42eb55cc28d7b59ee00ddcbee66ea69f  py36-lowest.txt
f8c745d16a20390873d146ccb50cf5689deb01aad6d157b77be203b407e6195d  py36-devel.txt
053e107ac856bc8845a1c8095aff6737dfb5d7718b081432f7a67f2125dc87ef  docs-html.txt
45b90aa0885182b883b16cb61091f754b2d889036c94eae0f49953aa6435ece5  py27-simplejson.txt
48bd0f6e66a6374a56b9c306e1c14217d224f9d42490328076993ebf490d61b5  coverage-report.txt
564580dad87c793c207a7cc6692554133e21a65fd4dd6fc964e5f819f9ab249c  py27.txt
8b8ff4633af0897652630903ba7155feee543a823e09ced63a14959b653a7340  py27-lowest.txt

Π‘Ρ‚Ρ€Π°ΡˆΠ½ΠΎ, ΠΏΡ€Π°Π²Π΄Π°? Из всСх тСстов Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ зависимости.

Π­Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python с Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ тСстов. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹, вСроятно, ΠΏΡ€ΠΈΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ это Π½Π΅Ρ‡Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ python, протСстированной Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ срСдС.

Jinja2

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° jinja2 , которая каТСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π·Π²Π΅Ρ€ΡŽΠ³ΠΈ:

  coverage-report: commands succeeded
  py26: commands succeeded
  py27: commands succeeded
  py33: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
ERROR:   docs-html: commands failed
ERROR:   py34: InterpreterNotFound: python3.4
ERROR:   pypy: InterpreterNotFound: pypy

Глядя Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ суммы, я ΡƒΠ΄ΠΈΠ²Π»ΡΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ py27.txt ΠΈ py26.txt ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ:

047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py26.txt
047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py33.txt
047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py35.txt
047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py36.txt
48bd0f6e66a6374a56b9c306e1c14217d224f9d42490328076993ebf490d61b5  coverage-report.txt
743ad9e4b59d19e97284e9a5be7839e39e5c46f0b9653c39ef8ca89c7b0bc417  py27.txt

@vlcinsky Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. МнС интСрСсно, являСтся Π»ΠΈ Flask особым случаСм ΠΈΠ»ΠΈ это Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΎΡ€ΠΌΠ°, Π½ΠΎ Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΄ΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ я ошибаюсь.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ я надСюсь, Ρ‡Ρ‚ΠΎ наша Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅ столкнСтся с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΈ Ρ‡Ρ‚ΠΎ различия Π±ΡƒΠ΄ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ управляСмыми.

@ Moritz90 Π’Π°ΡˆΠ° внутрСнняя Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° обслуТиваСт ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ, поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ сСбС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ контСкст выполнСния Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΈΠΌ.

ΠžΠ±Ρ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ python часто Π±Ρ‹Π²Π°ΡŽΡ‚ Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ настраиваСмыми, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Flask позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ парсСры json, Ρ‡Ρ‚ΠΎ покрываСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ тСстовым запуском.

МоТно ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ тСстировании ΠΈ tox ΠΈΠ· tox.ini Flask.

самыС Π½ΠΈΠ·ΠΊΠΈΠ΅ тСстовыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Π½Π° соотвСтствиС самой старой вСрсии зависимостСй.

devel тСстируСт Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ вСрсии основных зависимостСй.

Π― Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Flask находится Π½Π° Π±ΠΎΠ»Π΅Π΅ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ слоТности ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ тСстов.

tox.ini ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ количСство срСд (ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ†Π΅Π»Π΅Π½Ρ‹ Π½Π° 100% ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π°).

tox.ini майя ΠΎΡ‡Π΅Π½ΡŒ свСТий (2 дня) ΠΈ простой, Π΄Π°ΠΆΠ΅ здСсь 4 Ρ€Π°Π·Π½Ρ‹Ρ… окруТСния, ΠΈ py27 отличаСтся ΠΏΠΎ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ трСбованиям ΠΎΡ‚ py35 ΠΈ py36.

@ Moritz90
По ΠΏΠΎΠ²ΠΎΠ΄Ρƒ клСя ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΈΠΏΠ΅Π½Π² ΠΈ токс

  • pipenv --man ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструкции, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… tox.ini
  • tox-pipenv пытаСтся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ, Π½ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ мСня это сбиваСт.

tox.ini file позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ pipenv .

pipenv ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС Π² ΡƒΠΆΠ΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ virtualenv (ΠΊΠ°ΠΊ Π² случаС тСста Π½Π° основС tox) ΠΎΠ½ устанавливаСтся Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ env. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π°ΠΌ, вСроятно, понадобится сгСнСрированный Pipfile.lock , Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто (ΠΎΡ‚ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ .tox/py36/Pipfile.lock Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ тСста. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚Ρ€ΡŽΠΊ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния для мСстополоТСния Pipfile сдСлаСт это Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅.

@vlcinsky

  • setup.py - всС Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ понимаю ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π’Ρ‹ запускаСтС pipenv install -e . ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ setup.py отслСТиваСтся Ρ‡Π΅Ρ€Π΅Π· ваш Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. А Π·Π°Ρ‚Π΅ΠΌ запускайтС pipenv install всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ добавляСтС Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² setup.py.
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ - pipenv --deploy ΠΏΡ€ΠΈΠ·Π²Π°Π½ ΡƒΠ»ΠΎΠ²ΠΈΡ‚ΡŒ это. ЗапуститС Π΅Π³ΠΎ Π² своСм CI!
  • Pipenv Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ - согласСн, Ссли Π² инструмСнтС Π΅ΡΡ‚ΡŒ Π±Π°Π³ΠΈ - отстой. Но ошибки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ²ΠΎΠ΄ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ философии
  • Tox

    • Если Tox Ρ…ΠΎΡ€ΠΎΡˆ для управлСния тСстами, это прСкрасно. Если ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ ΠΈ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ сборками, это Π΄Π°ΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅.

    • Но Ссли Π±Ρ‹ это Π±Ρ‹Π»ΠΎ ΠΏΡ€Π°Π²Π΄ΠΎΠΉ, Ρƒ Pipenv Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для сущСствования. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ я ΠΌΠΎΠ³Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Tox Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ограничСния.

    • Как ΠΈ Π²Ρ‹ΡˆΠ΅, Π½Ρ‹Π½Π΅ΡˆΠ½Π΅Π΅ состояниС ΠΌΠΈΡ€Π° (отсутствиС Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ взаимодСйствия) Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ для ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ этой философии.

  • НСсколько envs

    • ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ здСсь Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ особыС случаи, Π²Ρ€ΠΎΠ΄Π΅ Flask.

    • Π£ мСня Π½Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ прСдлоТСния ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ (хотя, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρƒ Pipenv Π΅ΡΡ‚ΡŒ будущая функция?)

    • Но Π΄Π°ΠΆΠ΅ Π² этом случаС я всС Π΅Ρ‰Π΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ нСсколькими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π’ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС каТСтся, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простой скрипт update-all-lockfiles.sh локально ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ pipenv --deploy Π½Π° своСм CI, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ ошибки.


@ Moritz90 - БогласСн, двухэтапный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ излишним. Π’ частности, Ссли Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ / ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ Β«Ρ€ΡƒΡ‡Π½Ρ‹Π΅Β» обновлСния Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π² этом Π½Π΅Ρ‚ нСобходимости.


Π’ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌ ΠΏΠ»Π°Π½Π΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это Β«ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β» фокусируСтся Π½Π° Π²Π΅Ρ‰Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° самом Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ (Π½Π° ΠΌΠΎΠΉ взгляд, это (A) обслуТиваСт нСсколько env, (B) ΠΆΠ΅Π»Π°Π΅Ρ‚ ΡƒΠ»ΠΎΠ²ΠΈΡ‚ΡŒ измСнСния Π² зависимостях восходящСго ΠΏΠΎΡ‚ΠΎΠΊΠ°). Π­Ρ‚ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ основано Π½Π° прСходящих Π²Π΅Ρ‰Π°Ρ… (ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² Pipenv) ΠΈΠ»ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… нСдопониманиях Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ инструмСнт ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования.

Но Π΄Π°ΠΆΠ΅ для этих «слоТных» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΠ±Ρ€Π°ΠΌΠ»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Β«Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слоТных ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… случаях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс Pipenv нСдостаточСн, поэтому Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒΒ». ИМО, Π΅Π³ΠΎ Π½Π΅ слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° людСй Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ).

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ @vlcinsky стал Π±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ, Ссли Π±Ρ‹ Pipenv / Pipfile позволял ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ lib-dependencies , app-dependencies ΠΈ dev-dependencies . Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ lib-dependencies Ссли ваш ΠΏΠ°ΠΊΠ΅Ρ‚ являСтся ΠΎΠ±Ρ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Pipfile :

[lib-dependencies]
some-lib=="*"
another-lib=="*"
yet-another-one==">=1.0"

[dev-dependencies]
some-dev-tool=="1.1"

Для ΠΎΠ±Ρ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ вСрсий Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»ΠΈ [lib-dependencies] насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий Π² систСмС-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅.

Если ваш ΠΏΠ°ΠΊΠ΅Ρ‚ прСдставляСт собой ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ для установки pipenv Π² Ρ†Π΅Π»Π΅Π²ΠΎΠΉ систСмС), для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ вСрсии зависимостСй, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ [app-dependencies] . ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Pipfile :

[app-dependencies]
some-lib=="1.0.12"
another-lib=="1.*"
yet-another-one=="2.0"

[dev-dependencies]
some-dev-tool=="1.1"

/ ΠšΠΎΠ½Π΅Ρ† ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Pipfile.lib ΠΈ Pipfile.app .

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΎ Π±Ρ‹ ΠΎΡ‚ нСобходимости Π² Π±Π»ΠΎΠΊΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΈ сторонних инструмСнтах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π».

Π’Ρ‹Π·ΠΎΠ² инструмСнта ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ pipenv Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ создаст Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python ΠΈΠ»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΡ… создании.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это настоящая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ большим нСдоразумСниям. ОсобСнно срСди людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JS, Rust, Elm). МнС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ нСсколько мСсяцСв ΠΈ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с GIthub, ΠΏΠΎΠΊΠ° я Π½Π΅ понял, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Pipenv ΠΈ setup.py.

@feluxe

Π’Π°ΡˆΠΈ [lib-dependencies] ΠΈΠ»ΠΈ Pipfile.lib - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ сСгодня Π² Pipfile (ΠΊΠ°ΠΊ абстрактныС зависимости - максимально ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅).

Π’Π°ΡˆΠΈ [app-dependencies] ΠΈΠ»ΠΈ Pipfile.app - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² Pipfile.lock (Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… зависимостСй).

pipenv ΠΈ Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ситуациях - Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° развСртывания прилоТСния, Π½ΠΎ, вСроятно, Π½Π΅ для ΠΎΠ±ΠΎΠΈΡ… сразу. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ я Π½Π΅ Π²ΠΈΠΆΡƒ вСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π² Pipenv . Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ обязаны Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ†Π΅Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ Pipfile .

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это настоящая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ большим нСдоразумСниям. ОсобСнно срСди людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JS, Rust, Elm). МнС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ нСсколько мСсяцСв ΠΈ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с GIthub, ΠΏΠΎΠΊΠ° я Π½Π΅ понял, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Pipenv ΠΈ setup.py.

Богласовано. ВрСхсСкционноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ - Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ интСрСсноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ рассматривал, ΠΈ ΠΎΠ½ΠΎ каТСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΈ (Π½Π° ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅!) ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌ.

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Python, я всСгда чувствовал, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ Node package.json Π΄Π΅Π»Π°Π΅Ρ‚ это Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (Rust Π»ΡƒΡ‡ΡˆΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ компилятор ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½Π΅ΠΌ этапС). ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° зависимостСй ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ просто Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для языка сцСнариСв, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Python, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² абстрактном смыслС - Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для вас, Π½ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ инструмСнт, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Pipenv, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ.

Π₯отя концСпция трСхсСкционного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½Π΅ нравится, это всС ΠΆΠ΅ довольно нСсовмСстимоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ экосистСмы. Π­Ρ‚ΠΎ пространство ΡƒΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ setup.py, setup.cfg ΠΈ (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ) pyproject.toml. Если Pipenv (Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅, Pipfile) Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π² пространство, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ со связанными ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ pip (Π² ΠΈΠ΄Π΅Π°Π»Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ нСпосрСдствСнно ΠΈΠΌ) ΠΈ flit .

Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… вопросах, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависимостСй lib / app, это обсуТдСниС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ довСсти Π΄ΠΎ pypa-dev (список рассылки) ΠΈ / ΠΈΠ»ΠΈ процСсса PEP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стороны ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π»ΠΈΡ†Π°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Pipenv (Pipfile) ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… направлСниях.

@vlcinsky

Π’Π°ΡˆΠΈ [lib-dependencies] ΠΈΠ»ΠΈ Pipfile.lib - это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ сСгодня Π² Pipfile (ΠΊΠ°ΠΊ абстрактныС зависимости - максимально ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅).

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, Ссли это Π±Ρ‹Π»ΠΎ нСпонятно. Мои lib-dependencies ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ люди Π² настоящСС врСмя Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Π² setup.py / install_requires . ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, pypi-dependencies Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ.

@uranusjr

Π­Ρ‚ΠΎ пространство ΡƒΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ setup.py, setup.cfg ΠΈ (ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ) pyproject.toml.

Pipenv (инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки) ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с setup.py . ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π» зависимостСй setup.py Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Pipfile. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π² ΠΌΠΎΠ΅ΠΌ Π²ΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ :)

Как я ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π» Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… вопросах, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависимостСй lib / app, это обсуТдСниС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ довСсти Π΄ΠΎ pypa-dev (список рассылки) ΠΈ / ΠΈΠ»ΠΈ процСсса PEP, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠ³Π»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стороны ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π»ΠΈΡ†Π°, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Pipenv (Pipfile) ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±Ρ‹Ρ… направлСниях.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° бСспокойство;) Если я Π½Π°ΠΉΠ΄Ρƒ врСмя, я Π½Π°ΠΏΠΈΡˆΡƒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ для рассылки.

Однако Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этого прСдлоТСния я Π±Ρ‹ посовСтовал ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π² настоящСС врСмя ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡŽ Π½ΠΎΡ€Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса для всСго сообщСства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ обсуТдСниС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ.

@uranusjr - Π―

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° зависимостСй прилоТСния ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ просто Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для Ρ‚Π°ΠΊΠΎΠ³ΠΎ языка сцСнариСв, ΠΊΠ°ΠΊ Python.

@ tsiq-oliverc ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° прилоТСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ закрСпляли свои зависимости, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ‡Π½ΡƒΡ‚ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ свои, Ссли ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ источник Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ Π±Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ зависимостСй.

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Ρƒ ΠΌΠΎΠ΅Π³ΠΎ прилоТСния Π΄Π²Π΅ зависимости A ΠΈ B, ΠΎΠ±Π΅ зависят ΠΎΡ‚ C, Π½ΠΎ A Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ v1, Π° B Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ v2. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ языки ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ это Π²ΠΎ врСмя компиляции ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ способами. Rust, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅Π»Π°Π΅Ρ‚ это Π²ΠΎ врСмя ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ - ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ исполняСмый Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²Π΅ ΠΊΠΎΠΏΠΈΠΈ C (v1 ΠΈ v2), ΠΏΡ€ΠΈΡ‡Π΅ΠΌ A ΠΈ B связаны с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ…. Π’ ΠΌΠΈΡ€Π΅ C ++ это ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ динамичСских Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ; поиск символов выполняСтся Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ (Π²ΠΎ врСмя выполнСния), Π½ΠΎ идСя Ρ‚Π° ΠΆΠ΅ - компилятор Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ (ΠΈΠ· интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅), ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π―Π·Ρ‹ΠΊΠΈ сцСнариСв Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠΉΠ΄ΡƒΡ‚ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Node Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ этим, всСгда прСдполагая, Ρ‡Ρ‚ΠΎ зависимости нСсовмСстимы (A ΠΈ B всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ свой собствСнный C, Π΄Π°ΠΆΠ΅ Ссли Π΄Π²Π΅ ΠΊΠΎΠΏΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹), Π½ΠΎ это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ классу ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π²Π·Π»ΠΎΠΌΠ°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ взаимозависимости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всС (НадСюсь?) БогласСн уТасны. Python, вСроятно, Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ‚ΡƒΠ΄Π° ΠΈΠ΄Ρ‚ΠΈ (Π²ΠΎ всяком случаС, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это, скорСС всСго, Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ установки Python).

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это - ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΠΌΠ½ΠΎΠ΅ Π² инструмСнтах ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ «открСпят» Π²Π΅Ρ€ΡΠΈΡŽ зависимости. Bundler (ΠΈΠ· Ruby) ΠΊΠ°ΠΊ Π±Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚ это, рСкомСндуя людям Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Π³Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Bundler ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ вСрсии Π² Gemfile вмСсто Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Ρ… вСрсий Π² Gemfile.lock. Но люди склонны ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ совСты ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ хотят, поэтому Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ вСрсии ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ.

Π―, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π±Ρ‹Π» слишком силСн, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это просто Π½Π΅ сработаСт . Но, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ»ΠΈΡΡŒ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ пытался, - ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠΌΠ½Ρ‹Π΅ люди, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΌΠ½Π΅Π΅ мСня. Π›ΠΈΡ‡Π½ΠΎ я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ я Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ²ΠΈΠΆΡƒ ΠΎΡ‡Π΅Π½ΡŒ блСстящСС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ это.

@ tsiq-oliverc ΠŸΠΈΡ‚Π΅Ρ€ Π₯ΠΈΠ½Ρ‚ΡŒΠ΅Π½Ρ Π³Π΄Π΅-Ρ‚ΠΎ написал ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Β«ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ΅ запроса Π½Π° пСрСнос».

МнС это нравится, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ фокус с философских совСтов Π½Π° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ осязаСмыС ΠΈ практичСскиС Π²Π΅Ρ‰ΠΈ. И это Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΎΡ€ часто ΡƒΠ·Π½Π°Π΅Ρ‚ Π½Π° ΠΏΡƒΡ‚ΠΈ, Ρ‡Ρ‚ΠΎ идСя Π½Π΅ΠΏΠΎΠ»Π½Π° ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ использовании.

Π― попросил вас привСсти ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ python, Π³Π΄Π΅ pipenv ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ (ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ), Π° Π²Ρ‹ Π½Π΅ прСдоставили Π΅Π³ΠΎ.

Π’Ρ‹ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ качСства tox Π½ΠΎ ΠΏΡ€ΠΈΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Π½ΠΈΠΌΠΈ, всС ΠΆΠ΅ повторяя Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ… Π² ΠΌΠΈΡ€Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python.

Π’Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Flask - это, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, особый случай. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я поискал Π² Github ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ слово Β«Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β», отсортированный ΠΏΠΎ количСству Π²ΠΈΠ»ΠΎΠΊ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это, вСроятно, ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚, сколько людСй Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ), ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π» вСсь Β«ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ список Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎΒ» ΠΈ подсчитал количСство срСд для ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ОБ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Linux):

РСальноС количСство срСд для запуска тСстов Π±ΡƒΠ΄Π΅Ρ‚ Π² 2 (+ Windows) ΠΈΠ»ΠΈ 3 (+ OSX) Ρ€Π°Π·Π° большС.

tox ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² 2 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΈΠ· 3 (я Π½Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽ Π΅Π³ΠΎ с Travis ΠΈΠ»ΠΈ Appveyor, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ проводят Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ тСстирования).

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ срСд для тСстирования довольно Π²Π΅Π»ΠΈΠΊΠΎ, Flask ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ самый Π΄ΠΈΠΊΠΈΠΉ.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ срСд, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ фиксированныС зависимости, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Pipfile.lock Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ довольно просто, Π½ΠΎ волшСбного ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π½Π΅ происходит (Ссли Π΄Π°, ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΌΠ½Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий, ΠΊΠΎΠ³Π΄Π° это ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ).

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠ· «скомпилированного» ΠΌΠΈΡ€Π° ΠΈ чувствуСтС, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈ для Python. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½Π° самом Π΄Π΅Π»Π΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Python Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΆΠΈΠ²ΡƒΡ‚ Π±Π΅Π· Π½Π΅Π³ΠΎ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ здСсь Π½Π΅ примСняСтся Ρ‚Π°ΠΊ строго.

Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄, Ссли ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠΌ использованиС pipenv для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python, Ρ‡Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. И я Ρ…ΠΎΡ‡Ρƒ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ использованиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ качСству.

Для достиТСния этой Ρ†Π΅Π»ΠΈ я ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°ΡŽ вопросы:

  • ΠœΠΎΠ³Ρƒ Π»ΠΈ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт?
  • Как?
  • ΠŸΠΎΡ‡Π΅ΠΌΡƒ, ΠΊΠ°ΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ я ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»?
  • Π­Ρ‚ΠΎ Π²Ρ‹Π·Π²Π°Π»ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹? (лишняя Ρ€Π°Π±ΠΎΡ‚Π°, скрытиС ошибок ...)

@feluxe

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, Ссли это Π±Ρ‹Π»ΠΎ нСпонятно. Мои зависимости lib ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ люди Π² настоящСС врСмя ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π² setup.py / install_requires. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, pypi-dependencies Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ.

Π‘ΠΌ. ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ pbr Π² этом выпускС. Π­Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pipfile.

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ Pipfile нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΄Π²ΡƒΡ… Ρ†Π΅Π»Π΅ΠΉ (lib ΠΈ app), эти Π²Π΅Ρ‰ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. Если Π²Ρ‹ чувствуСтС, Ρ‡Ρ‚ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ? ΠžΠ±Ρ‹Ρ‡Π½ΠΎ я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ развСртывания Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

@vlcinsky Π― Π½Π΅ совсСм ΡƒΠ²Π΅Ρ€Π΅Π½, Π³Π΄Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ это Π²Π·ΡΡ‚ΡŒ (я Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΈΠ°Ρ€ Π²Ρ‹ проситС!), поэтому я ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² этом Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ TL; DR ΠΌΠΎΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ:

  1. Π”Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки ΠΎΡ‡Π΅Π½ΡŒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ Π² индустрии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pipenv.
  2. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ случаи, ΠΈ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Π² Π½ΠΈΡ… самыС соврСмСнныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹Ρ… инструмСнтов).
  3. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ бСзотвСтствСнно со стороны Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Pipenv Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ (1) просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ (2) влияСт Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ подмноТСство случаСв.

@uranusjr ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ . Π₯отя я Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ здСсь Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ спСцифичСскоС для языка, просто Ρ€Π°Π·Π½Ρ‹Π΅ сообщСства Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ эвристики для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Π΅Π· ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ - Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ вСрсий, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

Maven / Java (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) заставляСт вас Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎΠ± этом Π²ΠΎ врСмя сборки. Бпособ NPM ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎ врСмя выполнСния, Ссли Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ вСрсии ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‚ интСрфСйс. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Python, динамичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ зависимый ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ сбой / ΠΈ Ρ‚. Π”. Ссли вСрсия зависимости Π½Π΅ соотвСтствуСт ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ.

@vlcinsky

Π‘ΠΌ. ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ pbr Π² этом выпускС. Π­Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pipfile.

pbr каТСтся красивым ΠΈ всС Ρ‚Π°ΠΊΠΎΠ΅, Π½ΠΎ ΠΎΠ½ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я пытался Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого:

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΈΠ·Π±Π°Π²ΠΈΠ»ΠΎ Π±Ρ‹ ΠΎΡ‚ нСобходимости Π² Π±Π»ΠΎΠΊΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π°Π½Ρ‚ΠΈ-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΈ сторонних инструмСнтах, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π».

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… инструмСнтах Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅Ρ‚ нСобходимости.

Если Π²Ρ‹ чувствуСтС, Ρ‡Ρ‚ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ? ΠžΠ±Ρ‹Ρ‡Π½ΠΎ я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ развСртывания Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² pypi, я Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ использовал Pipenv для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ зависимостСй dev, Pipfile для описания зависимостСй dev, setup.py для описания зависимостСй lib с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ install_requires ΠΈ setuptools Π² setup.py Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ с Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ pipenv run python setup.py bdist_wheel upload . Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ слоТным.

На Π΄Ρ€ΡƒΠ³ΠΈΡ… соврСмСнных языках ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²) плюс ΠΎΠ΄ΠΈΠ½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° зависимостСй. ДокумСнтация находится Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, ΠΈ Π΅Π΅ Π»Π΅Π³Ρ‡Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Π° Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ разобрался со всСм этим Π·Π° ΠΏΠ°Ρ€Ρƒ часов. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ npm init , npm install foo --dev , npm publish . Pipenv / Pipfile ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этого, Ссли Π±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°ΠΊ эта, Π½Π΅ сущСствовало Π±Ρ‹.

Π― ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽ свой ΠΏΡ€ΠΈΠ·Ρ‹Π² ΠΊ созданию своСго Ρ€ΠΎΠ΄Π° "сообщСства" / Π²ΠΈΠΊΠΈ для этого обсуТдСния. Π•ΡΡ‚ΡŒ нСсколько "шаблонов", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ, ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· нас ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠΌ "способом создания Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python", Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΠ°ΠΊ я, с pbr, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ шаблон. Но страница Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° pipenv, Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя.

PS: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ pypi, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΏΠ°Π³Π°Ρ‚, Π° Π½Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ python setup.py. ИспользованиС Β«Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈΒ» слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½.

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, pipenv смоТСт Π²Ρ‹Ρ€Π°ΡΡ‚ΠΈΡ‚ΡŒ Β«ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΒ» ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹?

@feluxe Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° стихи . Π― просто Π½Π°Ρ‚Ρ‹ΠΊΠ°ΡŽΡΡŒ Π½Π° это ΠΈ каТСтся, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅.

Он Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ pipenv , ΠΈ Π΄Π°ΠΆΠ΅ большС, ΠΈ каТСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ это Π»ΡƒΡ‡ΡˆΠ΅, особСнно Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ управлСния зависимостями (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΎΠ½ΠΈ Ρ‚Π°ΠΊ ΠΏΡ€ΠΈΡ‚Π²ΠΎΡ€ΡΡŽΡ‚ΡΡ). Он выполняСт ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями, ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ всС Π² ΠΎΠ΄Π½ΠΎΠΌ инструмСнтС poetry .

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, смогут Π»ΠΈ pipenv ΠΈ poetry ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ усилия, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π΄Π°Ρ‚ΡŒ Python настоящий ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π― Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ€Π°Π·, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ это обсуТдСниС Π·Π°ΠΉΠ΄Π΅Ρ‚ слишком Π΄Π°Π»Π΅ΠΊΠΎ. Pipenv Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ просто Π²Ρ‹Ρ€Π°ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ publish ΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Ρ‡Ρ‚ΠΎ пытаСтся Π²Π·ΡΡ‚ΡŒ Π½Π° сСбя ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Ρ‰Π΅ большС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ экосистСму, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ всС Π΄Π΅Π»Π°ΡŽΡ‚ это Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ зависимости ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ тСорСтичСски Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΈΡ… вмСстС, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ сдСлано Π² ΠΈΡ… Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ процСссС.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС согласны с этим слияниСм, Π½ΠΎ ΠΏΡ€Π°Π²Π΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС людСй Π½Π΅ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΊ этому ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅. Π― Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎΠ± этом: обсуТдСниС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ инструмСнтов ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π³Π΄Π΅-Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ люди, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ опираСтся Pipenv, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ большС внимания. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ обсуТдСниС Ρ‚Π°ΠΌ. НСт смысла ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ это здСсь, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Pipenv Π½Π΅ Π² состоянии это ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π― Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» ΠΎΠ± этом: ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π° Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ инструмСнтов ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π³Π΄Π΅-Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Python, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ люди, Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ полагаСтся Pipenv, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ большС внимания.

Π― согласСн с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ обсуТдСниС этой ошибки Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ·-ΠΏΠΎΠ΄ контроля сСйчас, ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ публикация (эта ошибка касаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ управлСния зависимостями!), Но Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ мСсто для этого обсуТдСния? Π›ΡŽΠ΄ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ это здСсь, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ pipenv рассматриваСтся ΠΊΠ°ΠΊ ΡΡ‚ΠΎΠ»ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ шаг Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, Π° Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ хотят Π²ΠΎΠ·Π»ΠΎΠΆΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ обязанности Π½Π° ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… pipenv.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ : ΠΈΠ·Π²ΠΈΠ½ΠΈΡ‚Π΅, я, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ, пропустил сообщСниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ сдСлали ΠΈΠΌΠ΅Π½Π½ΠΎ это, ΠΊΠΎΠ³Π΄Π° Ρ‡ΠΈΡ‚Π°Π»ΠΈ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·.

Однако Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этого прСдлоТСния я Π±Ρ‹ посовСтовал ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π² настоящСС врСмя ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² ΠΊΡ€ΠΎΠ»ΠΈΡ‡ΡŒΡŽ Π½ΠΎΡ€Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса для всСго сообщСства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Python. Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ обсуТдСниС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ.

Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ с этим согласСн. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ большим ΠΏΠ»Π°Π½Π°ΠΌ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ² Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ процСсс для ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ прямо сСйчас . Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ снова сосрСдоточимся Π½Π° этом, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ этой бСсСды. НС Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ.

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Ρ‚Π΅ΠΌΠ΅: Π¦ΠΈΡ‚Π°Ρ‚Π° ΠΈΠ· сообщСния @uranusjr ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ зависимости Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ:

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это - ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡƒΠΌΠ½ΠΎΠ΅ Π² инструмСнтах ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ «открСпят» Π²Π΅Ρ€ΡΠΈΡŽ зависимости. Bundler (ΠΈΠ· Ruby) ΠΊΠ°ΠΊ Π±Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚ это, рСкомСндуя людям Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Π³Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Bundler ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ вСрсии Π² Gemfile вмСсто Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Ρ… вСрсий Π² Gemfile.lock. Но люди склонны ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ совСты ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ хотят, поэтому Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ вСрсии ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ.

Π―, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π±Ρ‹Π» слишком силСн, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это просто Π½Π΅ сработаСт. Но, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, всС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ

Π― Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ рСкомСндация для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ pipenv для своих сборок CI, Π½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Pipfile.lock Π²Π½Π΅ систСмы контроля вСрсий. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди, pipenv настоящСС врСмя Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с процСссом ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ описали Π²Ρ‹ΡˆΠ΅.

И я Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² опрСдСлСния Π²Π°ΡˆΠΈΡ… абстрактных зависимостСй Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для опрСдСлСния своих абстрактных зависимостСй. Π­Ρ‚ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ссли pipenv Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ слоТноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Pipfile с setup.py , Π½ΠΎ я Π½Π΅ понимаю, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² Ρ†Π΅Π»ΠΎΠΌ это плохая идСя.

@vlcinsky

Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ Pipfile нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π΄Π²ΡƒΡ… Ρ†Π΅Π»Π΅ΠΉ (lib ΠΈ app), эти Π²Π΅Ρ‰ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Π‘ΠΌ. Мой пост Π²Ρ‹ΡˆΠ΅. НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Ρ‚Π°ΠΊ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅? ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ стороны просто Π½Π΅ Π²ΠΈΠΆΡƒ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅. ΠŸΡ€ΡΠΌΠΎ сСйчас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Pipfile , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΎΠ³Π΄Π° Π²Π°ΠΌ придСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ зависимости ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, Π½ΠΎ я Π΅Ρ‰Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π» Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΡ…, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Pipfile для объявлСния зависимостСй Π² Ρ†Π΅Π»ΠΎΠΌ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ я ΡƒΠΆΠ΅ согласился с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Pipfile.lock Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² систСмС контроля вСрсий для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ссли Π²Ρ‹ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ситуации, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ : ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли окаТСтся, Ρ‡Ρ‚ΠΎ самому pipenv Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ввСсти Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ поля Π³Ρ€ΡƒΠ·Π° crate-type ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ app-dependencies ΠΈ lib-dependencies - Π·Π²ΡƒΡ‡ΠΈΡ‚ слишком слоТно.

@ Moritz90 НСсколько списков рассылки Python Π±Ρ‹Π»ΠΈ Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ°ΠΌΠΈ для провСдСния этого обсуТдСния.

pypa-dev являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅

python-ideas - это мСсто, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΈ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстСн всСму сообщСству Python. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ довСсти это Π΄ΠΎ уровня PEP (Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², я Π΄ΡƒΠΌΠ°ΡŽ).

@ tsiq-oliverc

Под PR я имСю Π² Π²ΠΈΠ΄Ρƒ: ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ вашСй ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Ρ€Π°Π·Π²Π΅Ρ‚Π²ΠΈΡ‚Π΅ Π΅Π΅, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ свою (1) - Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ с pipenv это Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³ΠΊΠΎ, ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΌΠ½Π΅. Π― ΠΎΡ‡Π΅Π½ΡŒ старался, ΠΈ Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ трудности.

Если ваш (2) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ эту Ρ€Π°Π±ΠΎΡ‚ΡƒΒ», вашСго PR Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π’ (3) Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ ΠΎ «нСбольшом подмноТСствС случаСв», Π½Π΅ называя Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа. ВсС Π»ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я описал Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ количСства Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ «нСбольшим подмноТСством»?

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ это обсуТдСниС, я составил ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ Π² Ρ…ΠΎΠ΄Π΅ обсуТдСния.

Π’ Ρ†Π΅Π½Ρ‚Ρ€Π΅ внимания: pipenv (Π°Π½Ρ‚ΠΈ) ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Python

Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» фокус: ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ (ΠΎΠ±Ρ‰ΠΈΡ…) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Python, Π½ΠΎ ΠΈ ΠΎ прилоТСниях, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ довольно дСшСво Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, ΠΈ ΠΎΠ½ Ρ…ΠΎΡ€ΠΎΡˆΠΎ дСмонстрируСт различия.

Π― Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΠ» всС, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΎ измСнСния Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… инструмСнтах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ pipenv , tox ΠΈ Ρ‚. Π”.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ pipenv Π° Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚

  • это инструмСнт развСртывания, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pipfile.lock .
  • это инструмСнт управлСния virtualenv.
  • это НЕ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ инструмСнт Π² смыслС создания ΠΏΠ°ΠΊΠ΅Ρ‚Π° python.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ прилоТСния

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚ (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Python) Π»ΠΈΠ±ΠΎ Π³ΠΎΡ‚ΠΎΠ² ΠΊ использованию Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅), Π»ΠΈΠ±ΠΎ это ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΊ запуску.

Π›ΠΈΡ‡Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Β«ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΒ» ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ (Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ мСньшС контСкстов выполнСния).

Π’ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: для использования Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π΅ (Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ)
  • ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: для развСртывания ΠΈ запуска

Бпособы установки:

  • library: pipenv install <package> Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ "запускаСм ΠΏΠ°ΠΊΠ΅Ρ‚ (Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ вСрсий для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ)"
  • application: pipenv sync Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ "примСняСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости"

АбстрактныС ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости

зависимости ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

  • абстрактныС зависимости: Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ вСрсии ΠΈΠ»ΠΈ использованиС, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ достаточно Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ (Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ вСрсии)
  • ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости: Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ вСрсии, Π² ΠΈΠ΄Π΅Π°Π»Π΅ с Ρ…Π΅ΡˆΠ°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

    pipenv Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹:

  • Pipfile : абстрактныС зависимости

  • Pipfile.lock : ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ (Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅) зависимости "

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Ρ‹ выполнСния

Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ количСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… контСкстов выполнСния

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:

    • python virtualenvs Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ОБ: ΠΎΡ‚ 3 Π΄ΠΎ 9 (Ρ‚ΠΎΡ€Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 30)

    • количСство ОБ: ΠΎΡ‚ 1 Π΄ΠΎ 3 (Linux, OSX, Windows)

    • ΠΎΠ±Ρ‰Π΅Π΅ количСство: ΠΎΡ‚ 3 Π΄ΠΎ 18

  • заявлСниС:

    • python virtualenvs Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ОБ: 1

    • количСство ОБ: 1

    • ΠΎΠ±Ρ‰Π΅Π΅ количСство: 1 (ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎ)

Π¦Π΅Π»ΠΈ, ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ΠΈ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ CI

ЦСль CI

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:

    • ΠΊΠΎΠ΄ Π²ΠΊΠ». Π΅Π³ΠΎ абстрактныС зависимости ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ установку ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²ΠΎ всСх ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… контСкстов выполнСния.

    • ΠΊΠΎΠ³Π΄Π° (частный / общСдоступный) pypi ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ зависимостСй, Ρ‚Π΅Ρ€ΠΏΠΈΡ‚ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ, Ссли это влияСт Π½Π° установку Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

  • заявлСниС:

    • ΠΏΡ€ΠΈ установкС (с использованиСм ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… / Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Ρ… зависимостСй) вся оТидаСмая Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ прСдоставляСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ контСкстС выполнСния

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΈ CI Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ:

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°:

    • абстрактныС зависимости, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ограничСния (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ): Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° устанавливаСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

    • всС ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

  • заявлСниС:

    • ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ зависимости ΠΏΠΎΠ»Π½Ρ‹ ΠΈ всС Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Ρ‹, Π»ΡƒΡ‡ΡˆΠ΅ всСго Π²ΠΊΠ». Ρ…Π΅ΡˆΠΈ: ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ устанавливаСтся ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

    • всС ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ тСстирования CI

  • Π Π΅ΠΆΠΈΠΌ: Β«Π‘Π΅Π³ΠΈ, ЀоррСст, Π‘Π΅Π³ΠΈΒ»

    • ΠŸΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Python Π² настоящСС врСмя Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

    • ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ tox ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ПО для тСстирования

    • ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ использования pipenv ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… зависимостСй (ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ)

  • Π Π΅ΠΆΠΈΠΌ: Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΒ»

    • НСт Pipfile Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ

    • Pipfile.lock создано pipenv install -e .

    • Pipfile.lock Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ (Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚) срСду ΠΈ позволяСт ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ virtualenv для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

  • Π Π΅ΠΆΠΈΠΌ: Β«Π›Π΅Π΄Π½ΠΈΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Β»

    • Π΄Π²ΡƒΡ…Ρ„Π°Π·Π½Ρ‹ΠΉ тСст

      • ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ абстрактных зависимостСй (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² setup.py install_requires ) ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ зависимого ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° pypi, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Pipfile.lock ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pipenv install -e .

    • запуск Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСста: Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ЗапускаСтся Π² virtualenv, созданном pipenv sync Pipfile.lock

      Как ΠΈ ΠΊΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создано Pipfile.lock

  • Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ (ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ)

  • автоматичСски ΠΏΡ€ΠΈ сборкС CI (ΠΈ, пройдя всС тСсты, ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ это ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠΌ)

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΡŽ

  • Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°: Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ (Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ возмоТности)
  • ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ (выполняСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌ контСкстС выполнСния)

    Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ установлСнного ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°:

  • общСдоступный pypi (Π½ΠΈΠ·ΠΊΠΈΠΉ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π² любоС врСмя)

  • частный pypi (Π±ΠΎΠ»Π΅Π΅ высокий Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ, обновлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ)
  • абстрактныС трСбования Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… (Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌΠ°)
  • ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ трСбования ( Pipfile.lock ): ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ

Π Π°Π·Π½ΠΎΠ΅

НСкоторыС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Pipfile.lock :

  • (Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ абстрактныС зависимости Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ абстрактным)
  • (Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½) Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ virtualenv для тСстируСмой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ абстрактныС зависимости сломанной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ)
  • Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ virtualenv ("ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ"), Π³Π΄Π΅ Π±Ρ‹Π» Π·Π°ΠΏΡƒΡ‰Π΅Π½ тСст (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΡΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ для Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… тСстов ΠΈ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π½ΠΈΠΌ)
  • Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ virtualenv для тСстируСмого прилоТСния
  • Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² производство

    Π”Ρ€ΡƒΠ³ΠΈΠ΅ подсказки

  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pbr позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ зависимости абстрактных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‡Π΅Ρ€Π΅Π· requirements.txt . ОбновлСниС чтСния Pipfile ΡƒΠΆΠ΅ Π² ΠΏΡƒΡ‚ΠΈ.

  • poetry package пытаСтся Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅Π΅ Π½Π° pyenv

    ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

  • Β«ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Ρ€Π΅ΠΏΠΎΒ», ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки:

    • ΠŸΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
    • НС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ сущСствуСт Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мноТСство контСкстов выполнСния, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Pipfile.lock . Π‘Π΅Ρ€ΡŒΠ΅Π·Π½ΠΎ: flask ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 11 Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… срСдах (Π² ΠΎΠ΄Π½ΠΎΠΉ ОБ) 10 Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… зависимостСй. ΠšΡ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡ… ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ?
    • ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ CI Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒΒ» Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Pipfile.lock (Π½ΠΎ сгСнСрированный сцСнариСм CI), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ virtualenv Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС.
  • Pipfile.lock Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

    • Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания virtualenv, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ зависимостСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² setup.py .

  • Pipfile Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ

    • Ссли ΠΎΠ½ повторяСт абстрактныС зависимости (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² setup.py ), ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ сломанноС объявлСниС зависимостСй setup.py .

    • рСкомСндуСтся: ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Pipfile ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pipenv install -e . ΠΈΠ»ΠΈ pipenv install -e .[tests] Ссли Π²Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½Ρ‹ тСстовыС зависимости, ΠΈ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ "тСсты" Π² setup.py

  • Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ pipenv install <something> Π² скрипты CI

    • сам ΠΏΠΎ сСбС ΠΎΠ½ Π½Π΅ сильно ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ

    • см. "Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ" Ρ€Π΅ΠΆΠΈΠΌ CI (Ρ‚ΠΎΠ³Π΄Π° вся установка Π² virtualenv Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· pipenv ).

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python (особСнно ΠΎΠ±Ρ‰ΠΈΠ΅) Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ большоС количСство контСкстов выполнСния. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ являСтся доказанная Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… условиях. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ каТСтся Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ сборками. Для людСй, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΈΠ· ΠΌΠΈΡ€Π° компилирования, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΈΠΌ Π°Π½Ρ‚ΠΈΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠΌ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, всС) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python Π½Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ сборки (Ссли Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π·Π½Π°Ρ‚ΡŒ), ΠΈ Python ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ прилоТСния Python ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΆΠΈΠ²Ρ‹ΠΌΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ: Python ΠΊΠ°ΠΊ язык сцСнариСв отличаСтся ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ (Π΄ΠΎΠ»ΠΆΠ΅Π½) Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π½Π° шаг ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (построСнноС ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ) Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ (СстСствСнноС ΠΈ обоснованноС) Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌΠ°.

Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ситуация прямо противополоТная, ΠΈ здСсь Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΠ·ΠΌΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ инструмСнта, ΠΊΠ°ΠΊ pipenv .

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС?

  • Π£ мСня Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ этим Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… нСдСль ΠΈΠ»ΠΈ Π΄Π²ΡƒΡ….
  • Π― ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС созданиС сСрии записСй Π² Π±Π»ΠΎΠ³Π΅ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ (Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½, Π³Π΄Π΅). Если Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ это мСсто (Π² ΠΈΠ΄Π΅Π°Π»Π΅, позволяя провСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обсуТдСниС), Π±Ρ‹Π»ΠΎ Π±Ρ‹ СстСствСнным мСстом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ссылку Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ (Ссли ΠΎΠ½ сохранится) Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² ΠΊΠ°ΠΌΠ½Π΅ :-).
  • Π― ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ @uranusjr Π²Π·ΡΡ‚ΡŒ Π½Π° сСбя ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ (Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π΅, Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ людСй Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ каТСтся ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹ΠΌ)

Бпасибо всСм Π·Π° ΠΎΡ‡Π΅Π½ΡŒ Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΡŽΡ‰ΡƒΡŽ Π΄ΠΈΡΠΊΡƒΡΡΠΈΡŽ - я Ρ‡ΡƒΠ²ΡΡ‚Π²ΡƒΡŽ, ΠΊΠ°ΠΊ сообщСниС Β«Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ потСрялся Π² этой Ρ‚Π΅ΠΌΠ΅Β», ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΠΎΠ΅ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π° - это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, СстСствСнно, ΠΌΡ‹ стали Π»ΡƒΡ‡ΡˆΠ΅.

@vlcinsky poetry ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с pyenv . Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° pipenv (Π½ΠΎ с Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ управлСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ ΠΈ прилоТСниями, IMO), Π½ΠΎ с Ρ‡Π°ΡΡ‚ΡŒΡŽ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π£ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» pyproject.toml ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΅Π³ΠΎ зависимости (абстрактныС зависимости), ΠΈ pyproject.lock ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ зависимости ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ для любой вСрсии Python ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ pyproject.toml Ρ„Π°ΠΉΠ» Π·Π°Π΄Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ сталкиваСтся pipenv . Волько ΠΏΡ€ΠΈ установкС poetry ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, сравнивая ΠΈΡ… с ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

И ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактныС зависимости (Π° Π½Π΅ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΡƒΡŽ), поэтому Π²Ρ‹ сохранитС Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ распространСнии вашСго ΠΏΠ°ΠΊΠ΅Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅Ρ€Π΅Π· PyPI).

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ абстрактныС зависимости для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ… ΠΌΠΈΡ€ΠΎΠ².

Поэзия @zface, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ зависимости, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ

По сути, ΠΌΡ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий Π½Π° обСспСчСниС отказоустойчивости, Π° для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с высокими заявлСниями Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ усилий, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ люди Π½Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌΠΈ случаями. Если Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ инструмСнт ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΈΠ· всСх ΠΌΠΈΡ€ΠΎΠ², Ρ‚ΠΎΠ³Π΄Π° я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ - сам pipenv Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ Π·Π° вас Π² блиТайшСм Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ссли Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ.

@techalchemy На самом Π΄Π΅Π»Π΅ я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠ΄Π°ΡŽ, я просто Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² pipenv .

И poetry выполняСт зависимости ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π² pyproject.lock , Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ pipenv Π΄Π΅Π»Π°Π΅Ρ‚ Π² Pipfile.lock . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ воспроизвСдСниС, ΠΊΠ°ΠΊ Π² pipenv . Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½ΡƒΡŽ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΈ, Ссли я Π½Π΅ ошибаюсь, это Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ pipenv .

ЕдинствСнный Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ абстрактныС зависимости, - это ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для распространСния (Π² основном для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² этом случаС Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½Π½Ρ‹Π΅ зависимости.

@vlcinsky Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ нСсколько ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ, Π½ΠΎ я всС Π΅Ρ‰Π΅ ΠΎΡ‡Π΅Π½ΡŒ заинтСрСсован Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Pipenv ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Π΅. Π’Ρ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ заинтСрСсованы Π² ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ запроса Π½Π° пСрСнос? Π― Π±Ρ‹Π» Π±Ρ‹ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ счастлив ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Π§Ρ‚ΠΎ касаСтся поэзии, я Π»ΠΈΡ‡Π½ΠΎ Π½Π΅ Ρ„Π°Π½Π°Ρ‚ Π² Ρ†Π΅Π»ΠΎΠΌ, Π½ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ. ВСроятно, Π½Π΅ слСдуСт ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΎΠ± этом Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Pipenv, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Pipenv хотят ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ людСй, Π½ΠΎ слСдуСт ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ссли обсуТдСниС проводится Π² pypa-dev ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° экосистСма Π² настоящСС врСмя Π΅ΡΡ‚ΡŒ.

поэзия Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ большС внимания ΠΈ Π²ΠΊΠ»Π°Π΄Π°. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ всСго для сообщСства, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Pipenv. ИмСя ТизнСспособный Π²Ρ‹Π±ΠΎΡ€, люди ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π²Π΅ΡΠΈΡ‚ΡŒ свой Π²Ρ‹Π±ΠΎΡ€ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сначала Π·Π°Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ Pipenv ΠΈ ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚. Π₯ΠΎΡ€ΠΎΡˆΠ°Ρ конкурСнция ΠΌΠ΅ΠΆΠ΄Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСхничСскиС ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² области Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ зависимостСй, Ρ‡Ρ‚ΠΎ ΠΈ Pipenv, ΠΈ поэзия Π΄Π΅Π»Π°ΡŽΡ‚ (ΠΈ Π½ΠΈ Ρ‚ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π΅ идСально). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ Ρƒ Π΄Ρ€ΡƒΠ³Π°.

@uranusjr Π”Π°, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ прояснСно ΠΈ заслуТиваСт Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ. Π’Π°ΡˆΠ° ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ привСтствуСтся.

А ΠΊΠ°ΠΊ насчСт Β«ΠΏΠ°Ρ€Π½ΠΎΠ³ΠΎ составлСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈΒ»? Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ эффСктивнСС всСго Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄ Π½Π΅ΠΉ Π² нСбольшом ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ всСго Π² Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°.

Π”ΡƒΠΌΠ°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ двумя итСрациями):

  • Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ это
  • ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ элСмСнты Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (ΡΡ‚Π°Ρ‚ΡŒΠΈ, Ρ€Π°Π·Π΄Π΅Π»Ρ‹)
  • ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ объСм ΠΈ Ρ†Π΅Π»ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°
  • ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Ρ‚ΡŒ схСму
  • Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹
  • ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΡ…
  • Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚
  • ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ (ΠΈ надСюсь, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ принят)

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ (Π½Π° основС Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ) ΠΈ ΠΏΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ мСня Π² качСствС Ρ€Π΅Ρ†Π΅Π½Π·Π΅Π½Ρ‚Π°, я Π±Ρ‹ Π½Π΅ стал ΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π― ΡΠ²ΡΠΆΡƒΡΡŒ с Π²Π°ΠΌΠΈ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Ρ‚ΡŒ дальнСйшиС дСйствия.

@vlcinsky Π’Π°ΠΊΠΆΠ΅ я доступСн ΠΊΠ°ΠΊ @uranusjr Π² PySlackers (рабочая ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Slack), Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ взаимодСйствиС Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π£ Pipenv Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΌ ΠΊΠ°Π½Π°Π» ( #pipenv ).

@uranusjr Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ, pipenv , я Π΄ΡƒΠΌΠ°ΡŽ, Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

Π§Ρ‚ΠΎ мСня бСспокоит, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ pipenv Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ сСбя ΠΊΠ°ΠΊ the officially recommended Python packaging tool хотя это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ инструмСнт для ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ просто диспСтчСр зависимостСй Π² сочСтании с диспСтчСром virtualenv.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½ Cargo, npm, yarn, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ инструмСнтами ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ вмСстС с ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌΠΈ зависимостСй, Π° piping - Π½Π΅Ρ‚.

И Π²ΠΎΡ‚ нСдостаток pipenv , ΠΎΠ½ просто ΠΌΡƒΡ‚ΠΈΡ‚ Π²ΠΎΠ΄Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ люди всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ошибки, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, с requirements.txt vs setup.py . Из-Π·Π° этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ»ΠΎΡ…ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ с ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ зависимостями Π² ΠΈΡ… setup.py . Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ сдСлали ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΊ Cargo: ΠΎΠ½ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ всС аспСкты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² / ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для обСспСчСния согласованности, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° pipenv - Π½Π΅Ρ‚.

И ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅:

Ρ‡Ρ‚ΠΎ ΠΈ Pipenv, ΠΈ поэзия Π΄Π΅Π»Π°ΡŽΡ‚ (ΠΈ Π½ΠΈ Ρ‚ΠΎ, Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π½Π΅ идСально)

Π§Ρ‚ΠΎ Ρ‚Ρ‹ имССшь Π² Π²ΠΈΠ΄Ρƒ? Из Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ я Π²ΠΈΠ΄Π΅Π», ΠΈΡ… ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ зависимостСй Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ устойчив, Ρ‡Π΅ΠΌ Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСтся pipenv . ЕдинствСнным нСдостатком являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ PyPI JSON API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ зависимостях ΠΈΠ·-Π·Π° ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π’ любом случаС, я Π΄ΡƒΠΌΠ°ΡŽ, ΠΊΠ°ΠΊ Π²Ρ‹ сказали, ΠΎΠ±Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ Ρƒ Π΄Ρ€ΡƒΠ³Π°.

И Π΅Ρ‰Π΅ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ: ΠΊΠ°ΠΊΠΎΠ²ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ pipenv, Ссли Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ pip ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Pipfile ? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ это просто ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ virtualenv?

Если диспСтчСр зависимостСй поэзии полагаСтся Π½Π° json api, это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΠ·-Π·Π° Β«ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²Β», Π½ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ. Api Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° json ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ _самыС Π½Π΅Π΄Π°Π²Π½ΠΈΠ΅_ зависимости, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ со старой вСрсиСй, ΠΈ Ссли ΠΎΠ½Π° Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ использовали json api, это Π±Ρ‹Π»ΠΎ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±Ρ‹Π» быстрым, Π½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² инфраструктуры сказала Π½Π°ΠΌ Π½Π΅ Π΄ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅ΠΌΡƒ. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ нСискрСнним Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ устойчивым, Ссли для Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½ полагаСтся Π½Π° Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ источник.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ связаны с построСниСм Π³Ρ€Π°Ρ„Π° зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт установочный Ρ„Π°ΠΉΠ», ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² настоящСС врСмя ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ. ΠžΠ±ΠΎΠΉΡ‚ΠΈ это просто Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π“Ρ€Π°Ρ„ΠΈΠΊ зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π΄Π°ΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Π›Π΅Π³ΠΊΠΎ ΠΏΠΎΠΌΠ°Ρ…Π°Ρ‚ΡŒ Ρ€ΡƒΠΊΠΎΠΉ ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ: «Ну, Ρ€Π°Π·Π²Π΅ это Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ pipenv Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠΌ, Ссли pip ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ pip-Ρ„Π°ΠΉΠ»?Β» НСт. Pipenv - диспСтчСр зависимостСй. Он управляСт ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ срСдами ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ воспроизводимый Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π― понимаю, Ρ‡Ρ‚ΠΎ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°ΠΌ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΡ‚ΠΌΠ°Ρ…ΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ этого ΠΈ сводитС этот инструмСнт ΠΊ диспСтчСру virtualenv, Π½ΠΎ это Π½Π΅ Ρ‚Π°ΠΊ. ΠœΡ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ для вСрсий Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ вас Π½Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, ΠΈ оставляСм ΠΈΡ… доступными, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ вСрсиях Python. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… колСс ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π² vcs (ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ Π³Ρ€Π°Ρ„ Ρ‚Π°ΠΌ), ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ², ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² pypi, частных индСксов ΠΈ Ρ‚. Π”.

Π’ ΠΊΠΎΠ½Ρ†Π΅ дня pip _ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ pip-Ρ„Π°ΠΉΠ»Ρ‹, это ΠΏΠ»Π°Π½, это Π±Ρ‹Π» ΠΏΠ»Π°Π½ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° создания Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Но это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ: «А ΠΊΠ°ΠΊ насчСт Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° pip смоТСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ?Β» Вопрос Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ. Пип ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ этот Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. На самом Π΄Π΅Π»Π΅ это Π½Π΅ относится Π½ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· описанных мною Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ устанавливаСм Ρ„Π°ΠΉΠ»Ρ‹ (кстати, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pip).

@techalchemy

Api Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° json ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅Ρ‚ самыС послСдниС зависимости, Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ Π΄Π΅Π»ΠΎ со старой вСрсиСй, ΠΈ Ссли Ρƒ Π½Π΅Π³ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅ΡΡ‚ΡŒ эта информация

Π­Ρ‚ΠΎ просто Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии, Π²Ρ‹Π·Π²Π°Π² https://pypi.org/pypi/{project}/{release}/json . Если Π²Ρ‹ просто Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚Π΅ https://pypi.org/pypi/{project}/json ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послСдниС зависимости, Π½ΠΎ Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ зависимостСй.

И Ρ‡Π°ΡΡ‚ΡŒ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ / ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² python Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нуТдаСтся Π² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ это принСсСт ΠΏΠΎΠ»ΡŒΠ·Ρƒ всСм, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JSON API.

Он управляСт ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ срСдами ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ воспроизводимый Ρ„Π°ΠΉΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.
ΠœΡ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Ρ‹ для вСрсий Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρƒ вас Π½Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, ΠΈ оставляСм ΠΈΡ… доступными, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ вСрсиях Python.

И poetry Ρ‚ΠΎΠΆΠ΅. И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ использовал JSON API, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ использованиС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‡Ρ‚ΠΎ ΠΈ pipenv (с использованиСм pip-tools). Π‘ΠΌ. Https://github.com/sdispater/poetry/issues/37#issuecomment -379071989, ΠΈ ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ устойчивым, Ρ‡Π΅ΠΌ pipenv (https://github.com/sdispater/poetry#dependency-resolution )

@zface Π― скаТу это Π² послСдний Ρ€Π°Π·, поТалуйста, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ . Если Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ это нСумСстно, сообщитС ΠΎΠ± этом ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π»ΠΈΡ†Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ Pipenv . ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π΅ ΠΊΠ»Π°Π΄ΠΈΡ‚Π΅ эти Π²Π΅Ρ‰ΠΈ Π½Π° Pipenv dev. Π­Ρ‚ΠΎ нСподходящСС мСсто для ΠΆΠ°Π»ΠΎΠ±, ΠΈ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ здСсь Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ своим ΠΆΠ°Π»ΠΎΠ±Π°ΠΌ. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Ρƒ вас тСхничСскиС вопросы. Π­Ρ‚ΠΎ срСдство отслСТивания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ для Pipenv, Π° Π½Π΅ доска обсуТдСний для инструмСнтов ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Python ΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ выполняСтся ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Python.

Pipenv Π½Π΅ просто полагаСтся Π½Π° pip-tools для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, поТалуйста, ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚Π΅ ΡΠΎΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ нашС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС Π΄ΠΎ ΠΎΠ΄Π½ΠΈΡ… строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π― ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ знаю, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ PyPI api, я Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, которая Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π°.

Π­Ρ‚ΠΎ просто Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ,

Π’Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ здСсь Π½Π΅ привСтствуСтся. НС Π΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΎ Ρ‡Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, проявитС Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎΡΡ‚ΡŒ.

ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ устойчивым, Ρ‡Π΅ΠΌ pipenv (https://github.com/sdispater/poetry#dependency-resolution)

Pipenv Π² настоящСС врСмя Π½Π΅ сглаТиваСт Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ зависимостСй. Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π΄Π΅Ρ€Π΅Π²ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΏΠ»ΡŽΡ‰Π΅Π½ΠΎ, ΠΈ Π·Π°ΡΠ²Π»ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вСсь инструмСнт, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΡƒΡ‡ΡˆΠ΅ ΠΈ устойчивСС, Π³Π»ΡƒΠΏΠΎ, Π²Ρ‹ снова ΠΈ снова Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ здСсь просто оскорбляСтС pipenv ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Π΅Ρ‚Π΅ поэзию. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π΅ Ρ‚ΠΎΡ€ΠΎΠΏΠΈΡ‚Π΅ΡΡŒ, Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ привСтствуСтся.

Π― согласСн, Ρ‡Ρ‚ΠΎ обсуТдСниС Π½Π΅ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π²Ρ‹Π³ΠΎΠ΄Ρƒ ΠΈΠ· Β«Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΒ» Π²ΠΎΠΊΡ€ΡƒΠ³ pipenv.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½ΠΈΠ΅,

[...] ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ошибки, Ρ‡Ρ‚ΠΎ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, с трСбованиями.txt ΠΈ setup.py. Из-Π·Π° этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ»ΠΎΡ…ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Ρ‹ с ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ зависимостями Π² ΠΈΡ… setup.py.

Π― Ρ€Π°Π·Π΄Π΅Π»ΡΡŽ это ΠΌΠ½Π΅Π½ΠΈΠ΅, Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свой собствСнный ΠΊΠΎΠ΄ Python Π½Π° самом Π΄Π΅Π»Π΅ слоТно, слишком слоТно, Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ чтСния большого количСства ΠΎΠ½Π»Π°ΠΉΠ½-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
Но Π΄Π΅Π»ΠΎ Π½Π΅ Π² pipenv ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ зависимости ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с этим. ΠœΡ‹ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ. ΠœΡ‹, ΠΊΠ°ΠΊ сообщСство, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ способ поэтапно ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ инструмСнтов Python.

И pipenv (ΠΈ, вСроятно, стихи) - ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ шаг Π²ΠΏΠ΅Ρ€Π΅Π΄.

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΎΠΉ стороны Pipfile для прилоТСния ΠΈ setup.py для Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны - это Π½Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Как Π±Ρ‹ слоТно ΠΌΡ‹ Π½ΠΈ объясняли с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ большого количСства слов, Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… статСй ΠΈ руководств ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, это слишком слоТно для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° самом Π΄Π΅Π»Π΅. Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ это Ρ‚Π°ΠΊ, Π½ΠΎ это Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π½Π°ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΈ бСзопасный способ.
Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, я Ρ…ΠΎΡ‡Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ инструмСнт, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, с двумя Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°Π» ΠΌΠ½Π΅ ΠΈ Π΄Π΅Π»Π°Π» мою Тизнь ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅.

Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ способом извлСчСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠΉ части, которая выполняСт requirements.txt/Pipfile ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ PBR, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ своСго Ρ€ΠΎΠ΄Π° 'easy setup.py', ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Pipfile arround install_requires , Π±Π΅Π· всС Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ приносит pbr, ΠΈ ΡƒΠΏΠ°ΠΊΡƒΠΉΡ‚Π΅ это Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ setuptools, которая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π΄Π΅Π»Π°Π΅Ρ‚.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ смоТСм ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΎΡ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°:

  • pipenv для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Pipfile (с вСрсиСй ΠΊΠ°ΠΊ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π² прилоТСниях)
  • pipenv для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Pipfile.lock (вСрсия поддСрТиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ)
  • ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ( pipfile_setuptools , install_requires_pipfile ?), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ уровня, Π·Π°Π΄Π°Ρ‡Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ввСсти Pipfile Π² install_requires .

Π­Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ связан с pipenv , Π½ΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ нуТдаСтся Π² ΠΎΠ±Ρ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ парсСра Pipfile . Π§Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅?

@gsemet Насколько я понимаю, PyPA пытаСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ это pyproject.toml вмСсто этого, Π²ΠΎ Π³Π»Π°Π²Π΅ с flit . Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ сначала ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с Π½ΠΈΠΌΠΈ (Π² pypa-dev ΠΈΠ»ΠΈ distutils-sig) ΠΎΠ± этом, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ использованию Pipfile Π² качСствС исходного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π§Ρ‚ΠΎ касаСтся синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Pipfile (ΠΈ Ρ„Π°ΠΉΠ»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ), ΠΎΠ½ обрабатываСтся Π² pypa / pipfile (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ поставщики Pipenv ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°).


Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ: поТалуйста, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΌΠ½Π΅, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ обсуТдСниС этого Π² любом ΠΈΠ· списков рассылки. Π£ мСня Π΅ΡΡ‚ΡŒ нСсколько ΠΈΠ΄Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ части ΠΏΠ°ΠΊΠ΅Ρ‚Π° Python.

Π― Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ грустно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ зависимости, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² pyproject.toml (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€ΠΎΠ»ΠΈ ΠΊΠ°ΠΊ setup.cfg выполняСмыС PBR), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ PyPa Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Pipfile ....

Бпасибо Π·Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° flit ΠΈ pipfile. Π•Ρ‰Π΅ Π΅ΡΡ‚ΡŒ pipenvlib ΠšΠ΅Π½Π½Π΅Ρ‚Ρ€Π°ΠΉΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ каТСтся Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ.

PBR setup.cfg каТСтся Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: data_files ), ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Ρ„Π°ΠΉΠ»Π°, ΡƒΠΆΠ΅ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ нСсколькими инструмСнтами (flake8, pytest, ...), ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ„Π°ΠΉΠ», ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ количСство Ρ„Π°ΠΉΠ» Π² ΠΊΠΎΡ€Π½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Python)

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ