easy_install / pip або apt-get


30

Як зазначається на сторінці вікі Ubuntu на Rails , рекомендується, щоб дорогоцінні камені управляли вашими залежностями Rails / Ruby.

Яка найкраща практика з пакетами Python, як Django? Чи повинен я встановити їх через apt-get або мені дозволити easy_install / pip забирати їх з PyPi?

Відповіді:


29

Є кілька аргументів:

  1. Використовуйте сховища / PPA, оскільки вони будуть тримати вас стабільними та в курсі виправлень безпеки.

    Це здебільшого вірно. Якщо, наприклад, ви встановите, python-djangoяк у мене, ви отримаєте оновлення безпеки. Це добре, тому що вам потрібно тримати лише верх, але все-таки потрібно перевірити речі, перш ніж натискати оновлення (хоча тестування повинно бути щодня).

    Ви можете стверджувати, що якщо ви використовували pip, ви ніколи не можете перевіряти наявність оновлень.

  2. Використовуйте, pipщоб ви могли використовувати належні "стабільні" версії.

    У цьому немає сумнівів: репост відстає від реального світу. Django має версію 2.0, але репост для LTS-версії Ubuntu (яку багато людей дотримуються для серверів), ви отримуєте лише 1,8 на Ubuntu 16,4 lts з Python 2, але все одно отримуєте оновлення безпеки на ньому.

    pipдає вам найсвіжіші весь час. Вам просто потрібно оновити їх самостійно.

  3. Оновлення встановленої Python установки, яка використовується повторно, може бути кошмаром

    Коли ви відволікаєте оновлення Ubuntu до наступної версії, він оновлює безліч пакетів. Багато речей змінюється. Я знаю, що в Django це означає, що вам потрібно подбати про невідповідність коду, депресія ... Але те саме стосується всіх інших кодів Python.

    Те саме стосується, pipале з pipвами потрібно робити одночасно. Ви знаєте, що викликає проблеми, тому ви знаєте, де шукати, щоб знайти виправлення.

  4. pip+ virtualenvдозволяє тримати речі окремо

    virtualenvдозволяє мати портативні, маленькі середовища Python. Це дозволяє вам мати декілька різних середовищ Python, що працюють на одній машині.

    Очевидним благом здається, що це стосується технічного обслуговування, оскільки ви можете керувати середовищем так само, як і керувати кодом. Навіть зберігайте середовище у VCS теж ... але вам слід пам’ятати, що наявність дванадцяти різних virtualenvs означає дванадцять середовищ, вам потрібно перевірити та оновити.


Редагувати: Після жахливої ​​серії оновлень на сервері, щоб отримати його від Lucid до Precision, я перейшов із змішаної Apt + pip (nr 1 та 2) до чистої ситуації pip + virtualenv (nr. 4). Замість того, щоб мати один virtualenv на сайт, я отримав один спільний між десятками сайтів. Це зараз працює.

Мені також довелося написати невеликий сценарій, який перевіряє стан пакунків, встановлених за допомогою pip. Якщо є оновлення, я повинен застосовувати їх вручну (що добре, тому що я тестую їх локально, в локальному virtualenv). Це все ще трохи болісніше, ніж це було спочатку, але набагато краще в довгостроковій перспективі.


10
  • Пакети із сховищ

    Їх слід встановлювати, коли ваша програма якимось чином специфічна для Ubuntu . Вони гарантують вам стабільну версію, яку ви можете встановити на різних машинах Ubuntu, вони підтримуються і іноді більш зрілі, ніж ті, які ви отримуєте через pip. Якщо ви розгортаєте купу серверів ubuntu або ви пишете програми Ubuntu, використовуйте їх, якщо вони доступні .

    Вони також іноді містять специфічні для Ubuntu модифікації.

  • pip vs easy_install

    Про це не так багато, як сказав це хакер Джанго Джеймс Беннет:

    Будь ласка, для любові до Guido перестаньте використовувати setuptools та easy_install, а використовуйте distutils та pip замість цього.

    Для поглибленої дискусії щодо відмінностей див. Про упаковку Джеймса Беннетта (джанго) та "Невеликі виправлення до" На упаковці " Ієна Бікінга (від мозіли).

Якщо ви хочете бути в безпеці, спробуйте розгортати файли, використовуючи virtualenv . Це дає вам ізольоване середовище python, тож ви можете бути впевнені, що ваш додаток працюватиме на будь-якій машині.

Почекайте трохи, я вірю, що деякі люди зі мною не погоджуються.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.