سؤال

هل من الممكن لتغليف وحدات الثعبان "يمكنن" و "BeautifulSoup" في ملف .py واحد؟

ومشكلتي هي التالية: لدي النصي الثعبان الذي يتطلب مكننة وBeautifulSoup. انني ادعو من صفحة بي. خادم الإستضافة يدعم الثعبان، ولكن ليس لديها وحدات مثبتة. لهذا السبب أود أن قيام بذلك.

وآسف إذا كان هذا هو السؤال البكم.

وتحرير: شكرا للجميع إجاباتك. أعتقد أن الحل لهذا يحل جميع أنحاء virtualenv. يمكن أن يكون شخص ما نوع ما يكفي لشرح لي هذا بعبارات بسيطة جدا؟ لقد قرأت الصفحة virtualenv، ولكن ما زلت مشوشة جدا. شكرا مرة أخرى مرة واحدة.

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

المحلول

تحقق من virtualenv، لإنشاء تثبيت الثعبان المحلي، حيث يمكنك تثبيت BeautifulSoup وجميع المكتبات الأخرى التي تريد.

http://pypi.python.org/pypi/virtualenv

نصائح أخرى

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

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

import os, sys
sys.path.append(os.path.dirname(__file__))

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

>>> sha=types.ModuleType("sha")
>>> sha
<module 'sha' (built-in)>
['__doc__', '__name__']
>>> sha.foo=3
>>> sha.zam=types.ModuleType("zam")
>>> sha.foo
3
>>> dir(sha)
['__doc__', '__name__', 'foo', 'zam']

ولكن على أي حال سيكون لديك لتوليد رمز أن يخلق هذا التخطيط ويخزن الاشياء في معرفات اسمه بشكل صحيح.

وما تحتاجه هو ربما لتعلم كيفية استخدام الملفات .egg. فهي كيانات متكتل فريدة من نوعها تحتوي على مكتبتك، مثل ملفات جرة.

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