python - معنى - يؤكد بالانجليزي




ما هي فوائد بيب و فيرتوالينف؟ (3)

لذلك الجميع يقول لي لاستخدام بيب و فيرتوالينف ولكن لا أحد قادر على شرح لي كيف هو أفضل من نهجي الحالي. السبب الرئيسي للناس لاستخدام بيب و فيرتوالينف يبدو أن الجميع يستخدمه ...

أنا متأكد من أن هناك أسباب وجيهة جدا لاستخدام بيب و فيرتوالينف ولكن لم أتمكن من العثور عليها مع جوجل. أنا على أمل أن شخص ما من المجتمع ستاكوفيرفلو سوف تكون قادرة على شرح لهم بالنسبة لي.

وهنا كيف يمكنني حاليا تنظيم مشاريع جانغو بلدي:

site/src/ : contains all python-only dependencies of my project

site/lib/ : contains symlinks to the python packages

site/[projectname]/ : contains all my project specific code

مجلد الموقع بأكمله هو الاختيار في مستودع بلدي (نعم، بما في ذلك جميع بيثون فقط التبعيات مثل دجانغو نفسها).

يتم توثيق جميع التبعيات غير الثعبان فقط (بيل، psycopg2، ...) في ريدمي وتثبيتها على مستوى النظام (الرابطة بين الحصول على تثبيت ....)

على سبيل المثال، دعنا نقول لدي اسم مشروع "بروجكتفو" يعتمد على جانغو-1.2.3، بيجيويب-0.1.3 و psycopg2 سيكون لدي:

/usr/lib/python2.5/site-packages/psycopg2

~/projects/foo/site : checkout of my repository
~/projects/foo/site/src/django-1.2.3
~/projects/foo/site/src/pygeoip-0.1.3
~/projects/foo/site/lib/django -> symlink to ../src/django-1.2.3/django
~/projects/foo/site/lib/pygeoip -> symlink to ../src/pygeoip-0.1.3/pygeoip
~/projects/foo/site/projectfoo/

الآن كيف هذا مقارنة مع بيب / فيرتوالينف في الممارسة العملية؟

نشر المشروع بنهجي الحالي :

svn checkout https://myserver.com/svn/projectfoo/tags/1.0.0STABLE/site

نشر مع بيب / فيرتوالينف :

wget https://myserver.com/svn/projectfoo/tags/1.0.0STABLE/projectfoo-requirements.txt
pip install -U -E projectfoo-venv -r projectfoo-requirements.txt

العمل على مشروع مع نهجي الحالي :

cd ~/projects/foo/site/projectfoo
export PYTHONPATH=.:..:../lib
./manage.py runserver 0:8000

العمل على مشروع مع بيب / فيرتوالينف :

workon projectfoo
cd path/to/project
./manage.py runserver 0:8000

التعامل مع التبعيات غير الثعبان فقط :

سيتم التعامل مع تبعيات غير الثعبان فقط بنفس الطريقة، لا توجد طريقة أنا ذاهب إلى استخدام الخيار -no --no-site-packages من فيرتوالينف وتثبيت مترجم وجميع التبعيات بناء على خوادم بلدي، ر أعتقد أن أي شخص يفعل ذلك على أي حال.

ترقية الاعتماد على الثعبان فقط مع النهج الحالي :

أنا الخروج / بفك النسخة الجديدة في سرك، وإزالة القديم من سرك، وتحديث الارتباطات في ليب والالتزام. الآن كل شخص آخر يعمل على المشروع سوف تحصل على التحديث في svn up المقبل أو git pull . شيء واحد غير لطيف هو أن المجلد القديم في سرك سوف يبقى إذا كان يحتوي على بعض ملف بيك في ذلك، يمكن بسهولة تجنب ذلك عن طريق إزالة كل بيك قبل تحديث النسخة المحلية.

ترقية التبعية فقط بيثون مع بيب / فيرتوالينف :

يمكنك ارتكاب نسخة جديدة من ملف المتطلبات، ونأمل أن كل شخص يعمل على المشروع إشعار الإصدار الجديد عند تحديث النسخة المحلية الخاصة بهم وأنها ثم تشغيل pip install -E projectfoo-venv -r requirements.txt .

تحرير : أنا إزالة استخدام -U مع نقطة، وهذا ليس هناك حاجة مع نقطة 8.2

تحرير : الميزة الوحيدة على نقطة / فيرتوالينف على نهجي الحالي يبدو أن عند العمل على مشاريع مختلفة تتطلب نسخة مختلفة من الثعبان. ولكن في تجربتي عندما كنت في حاجة إلى إصدارات مختلفة من الثعبان تحتاج أيضا إصدارات مختلفة من المكتبات نظام الآخرين (بيل، psycopg2، ...) و فيرتوالينف لا يساعد مع ذلك (إلا إذا كنت مجنون بما فيه الكفاية لاستخدام - لا موقع حزمة الخيار، وحتى ذلك الحين انها غير مكتملة). الحل الوحيد الذي يمكن أن أفكر به في هذا الوضع هو استخدام آلات افتراضية مختلفة.

إذا ما أنا في عداد المفقودين؟ يمكن للشخص أن يشير لي إلى حالة استخدام حيث بيب أو فيرتوالينف سيكون أفضل مما أفعل؟


نشر مع بيب / فيرتوالينف:

بالنسبة لك:

wget https://myserver.com/svn/projectfoo/tags/1.0.0STABLE/projectfoo-requirements.txt
pip install -U -E projectfoo-venv -r projectfoo-requirements.txt

ما أقوم به: أنا أيضا "تجميد" حزم ولكن أفعل ذلك مع pip و virtualenv وتحقق في المشروع بأكمله. بما في ذلك حزم بايثون. لذا، فإن نشري هو تماما كما يلي:

svn checkout https://myserver.com/svn/projectfoo/tags/1.0.0STABLE/site

العمل على مشروع مع بيب / فيرتوالينف:

بالنسبة لك:

workon projectfoo
cd path/to/project
./manage.py runserver 0:8000

ما أقوم به: إضافة خطاف بوستاكتيفات مثل هذا:

$ cat bin/postactivate
cd $VIRTUAL_ENV
./manage.py runserver 0:8000
$

والآن، للتغيير إلى المشروع:

workon projectfoo

فيرتوالينف يضيء حقا عندما يكون لديك عدد من المشاريع، ولا تريد لهم جميعا حصة نفس تركيب بيثون. على سبيل المثال، يمكن أن يكون لديك مشروعين مع متطلبات متعارضة.


أنا اتبع الطريقة التي اقترحتها دون بيب / فيرتوالينف لمشاريعي المعتادة. هذا يسمح لي لوضع الحزم في دليل معين.

+ext
  |
  |------python packages
+source
  |
  |------ project code and packages

وعادة في البرنامج النصي بدء التشغيل تحديث بيثونباث

export PYTHONPATH="";
export PYTHONPATH="${PYTHONPATH}:${workingdir}/path/to/ext";

وهذا له ميزة الحفاظ على المشروع والاعتماديات مكتفية ذاتيا. أنا أكرر، أفكارك هنا.

كيف من أي وقت مضى، أجد استخدام فيرتوالينف، متى

  1. لا بد لي من تجربة something new .
  2. حتى أفضل عندما أريد استخدام two different versions of package ومقارنتها.
  3. استخدام آخر هو المكان، وأظل different related packages that can be used across projects .

مثال: الوثائق : بعض الحزم الرئيسية، لقد قمت بتثبيت يتضمن أبو الهول، بيغرافويز، نتيرويكس وبعض حزم أكثر التصور. أنا استخدامه عبر المشاريع وأيضا إبقائها من تركيب مستوى النظام لإبقائه غير ملوثة.

وأود أيضا أن الخروج: صفار البيض. أجد أنه لطيف في تركيبة من نقطة / فيرتوالينف.

يمكنك إدراج الحزم

yolk -l
Jinja2          - 2.5.5        - active 
Markdown        - 2.0.3        - active 
Pycco           - 0.1.2        - active 
......

وتحقق من التحديثات بيبي.

yolk --show-updates
Pycco 0.1.2 (0.2.0)
Sphinx 1.0.4 (1.0.5)
pip 0.8.1 (0.8.2)






pip