سؤال

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

ما هي أفضل طريقة للقيام بذلك؟ أو ينبغي أن مجرد تمتص منه وإسقاط خيار -ما لا-حزم الموقع؟

هل كانت مفيدة؟

المحلول

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.pth 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.py 
$ ln -s /usr/lib/pymodules/python2.6/cairo/
$ python
>>> import pygtk
>>> import gtk

نصائح أخرى

وطريقة واحدة لإضافة مسارات إلى رمز باستخدام sys.path.

import sys

sys.path.append(somepath)

وهناك طريقة أخرى لاستخدام الموقع، الذي يعالج الملفات .pth بالإضافة إلى إضافة إلى sys.path.

import site

site.addsitedir(sitedir, known_paths=None)

https://docs.python.org/library/site.html

ولكن ربما كنت لا تريد أن يضيف هذا إلى كافة التعليمات البرمجية ذات الصلة الخاصة بك.

ذكر

ولقد رأيت من sitecustomize.py تستخدم لأداء شيء من هذا القبيل، ولكن بعد بعض التجارب لم أستطع الحصول عليه للعمل كما كان متوقعا.

وهنا فإنه يذكر أن صناعة السيارات في استيراد sitecustomize.py المنتهية في 2.5، إذا كان لديك ليس على 2.5 تجربتها. (فقط إضافة أحد مسار إضافة أساليب أعلاه إلى ملف وأسقطه في دليل تشغيل البرنامج) يذكر عمل حول الأسلوب في آخر لمستخدمي 2.5 وما فوق.

http://code.activestate.com/recipes/552729/

وأجد في هذه الحالة، روابط الرمزية، أو حتى نسخ ملفات محددة (حزم، وحدات، ملحقات) يعمل بشكل جيد حقا.

ويسمح البرنامج لمحاكاة يتم تشغيلها في بيئة الهدف، بدلا من تغيير التطبيق لتتناسب مع بيئة التطوير.

ونفس الصفقة لشيء من هذا القبيل إلى AppEngine.

وتحقق من النصي postmkvirtualenv هوك هنا:

https://stackoverflow.com/a/9716100/60247

في هذه الحالة، هو استخدامه لاستيراد باي كيوت وSIP بعد إنشاء Virtualenv جديد، ولكن يمكنك إضافة الحزم التي تحتاج إلى LIBS.

والتصويت الذي النصي يصل لأنه أمر رائع:)

إذا كنت تريد تضمين الروابط إلى النظام ذات الصلة والثعبان جتك 2.0 في virtualenv، يمكنك فقط استخدام نقطة تثبيت <لأ href = "https://pypi.python.org/pypi/ruamel.venvgtk" يختلط = "نوفولو noreferrer"> ruamel.venvgtk :

ونقطة تثبيت ruamel.venvgtk لم يكن لديك أي شيء استيراد والروابط الإعداد أثناء التثبيت.

وهذا هو مفيد خاصة إذا كنت تستخدم tox، في هذه الحالة ما عليك سوى أن تشمل تبعية (لتوكس):

deps:
    pytest
    ruamel.venvgtk

وتضمن بيئة حديثا الإعداد python2.7 سيكون الروابط ذات الصلة قبل أن يتم تشغيل الاختبارات.

ومعلومات أكثر تفصيلا عن كيفية الإعداد يمكن العثور على وصلات في هذه الإجابة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top