سؤال

أقوم بتطوير وحدة Python Utility للمساعدة في تنزيلات الملفات ، والمحفوظات ، وما إلى ذلك. لدي مشروع تم إعداده في بيئة افتراضية مع اختبارات الوحدة الخاصة بي. عندما أرغب في استخدام هذه الوحدة على نفس الكمبيوتر (بشكل أساسي "الإنتاج") ، أقوم بنقل الملفات إلى mymodule دليل في ~/dev/modules/mymodule

أحتفظ بجميع الوحدات النمطية الثالثة ~/dev/modules/مساهمة. هذه مساهمة المسار على Pythonpath الخاص بي ، لكن MyModule ليس لأنني لاحظت ذلك إذا mymodule موجود على Pythonpath الخاص بي ، لا يمكن أن تميز اختبارات وحدتي بين إصدار "التطوير" وإصدار "الإنتاج". ولكن الآن إذا كنت أرغب في استخدام وحدة الأداة المساعدة الشائعة هذه ، فيجب علي إضافتها يدويًا إلى Pythonpath.

هذا يعمل ، لكنني متأكد من أن هناك طريقة أفضل وأتمتة.

ما هي أفضل طريقة للحصول على وحدة تطوير وإنتاج على نفس الكمبيوتر؟ على سبيل المثال ، هل هناك طريقة لتعيين Pythonpath ديناميكيًا؟

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

المحلول

يمكنك إضافة/تعديل مسارات Python على sys.path, ، فقط تأكد من أن المسار الأول هو الدليل الحالي ".", ، لأن بعض وحدات الطرف الثالث تعتمد على الاستيراد من دليل الوحدة الحالية.

مزيد من المعلومات حول مسارات بيثون:http://djangotricks.blogspot.com/2008/09/note-on-python-paths.html

نصائح أخرى

أنا أخمن بالبيئة الافتراضية هل تعني حزمة VirtualEnv؟

http://pypi.python.org/pypi/Virtualenv

ما سأحاوله (والاعتذار إذا لم أفهم السؤال بشكل صحيح) هو:

  • حافظ على المصدر في مكان ما لا يشير إليه Pythonpath (على سبيل المثال/مشاريع/MyProject)
  • اكتب برنامجًا بسيطًا لـ setuptools أو distutils لتثبيته (انظر Python distutils - هل يعرف أي شخص كيفية استخدامه؟)
  • استخدم حزمة VirtualEnV لإنشاء بيئة افتراضية Dev مع خيار حزم-لا موقع-وبهذه الطريقة ، لن يرى إصدار "Dev" أي حزم مثبتة في تثبيت Python الافتراضي.
  • (تأكد أيضًا

ثم ، للاختبار:

  • تنشيط البيئة الافتراضية ديف
  • قم بتشغيل البرنامج النصي للتثبيت ، (عادة ما يشبه Python Setup.py Build Install). تنتهي الحزمة الخاصة بك في/path/to/dev_virtualenv/lib/python2.x/site-packages/
  • الاختبار ، كسر ، إصلاح ، كرر

وللإنتاج:

  • تأكد من عدم تنشيط Dev VirtualEnv
  • قم بتشغيل البرنامج النصي للتثبيت
  • كل ما هو جيد للذهاب ، يتم إخفاء إصدار "dev" في بيئة افتراضية لا يمكن للإنتاج رؤية ...
  • ... وليس هناك (مباشر) العبث مع Pythonpath

ومع ذلك ، أكتب هذا بثقة شخص لم يحاول بالفعل تحديد استخدام VirtualEnv في الغضب والأمل الذي فهمته بشكل غامض سؤالك ... ؛)

يمكنك تعيين PYTHONPATH كمتغير بيئة عالمي يشير إلى رمز الإنتاج الخاص بك ، ثم في أي قذيفة تريد استخدام رمز التطوير ، قم بتغيير PYTHONPATH للإشارة إلى هذا الرمز.

(هل هذا مبسط للغاية؟ هل فاتني شيء؟)

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