سؤال

ليس لدي الكثير من الخبرة مع tcsh، لكني مهتم بالتعلم.أواجه مشكلات في إقناع بايثون برؤية PYTHONPATH.يمكنني تكرار $PYTHONPATH، وهذا صحيح، ولكن عندما أبدأ تشغيل Python، لا تظهر مساراتي في sys.path.أيه أفكار؟

يحرر:

[dmcdonal@tg-steele ~]$ echo $PYTHONPATH
/home/ba01/u116/dmcdonal/PyCogent-v1.1

>>> from sys import path
>>> from os import environ
>>> path
['', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/FiPy-2.0-py2.5.egg', '/apps/steele/Python-2.5.2', '/apps/steele/Python-2.5.2/lib/python25.zip', '/apps/steele/Python-2.5.2/lib/python2.5', '/apps/steele/Python-2.5.2/lib/python2.5/plat-linux2', '/apps/steele/Python-2.5.2/lib/python2.5/lib-tk', '/apps/steele/Python-2.5.2/lib/python2.5/lib-dynload', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/Numeric']
>>> environ['PYTHONPATH']
'/apps/steele/Python-2.5.2'
هل كانت مفيدة؟

المحلول

كيف تقوم بإعداد PYTHONPATH؟قد تكون مربكًا بين مجموعة tcsh مقابل مجموعة tcsh.setenv.استخدم "set" لتعيين ما يستدعيه tcsh متغيرات القشرة واستخدم "setenv" للضبط متغيرات البيئة.لذلك، تحتاج إلى استخدام setenv لكي تتمكن بايثون من رؤيته.على سبيل المثال:

$ set FOO='bar'
$ echo $FOO
bar
$ python -c 'import os; print os.getenv("FOO")'
None

$ setenv BAR 'wiz'
$ echo $BAR
wiz
$ python -c 'import os; print os.getenv("BAR")'
wiz

هناك المزيد من المعلومات المتاحة في قسم المتغيرات في وثائق tcsh.

نصائح أخرى

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

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

يفحص:

  1. PYTHONPATH موجود في os.environ،
  2. وقم بتعيين القيمة الصحيحة لقائمة المسارات المفصولة بنقطتين.

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

إذا لم يكن موجودًا في os.environ، فإن بيئتك لا تمر عبر Python (ربما خطأ آخر).

بالطبع، اعرض لنا الكود/الصادرات الفعلية، وسيخبرك شخص ما بسرعة كبيرة.

ولدي أيضا نفس المشكلة حتى أنا وضعت PYTHONPATH البيئة بشكل صحيح في .cshrc عندما كنت بيثون 2.5.1، عندما كنت تبديل لبيثون 2.6.2، أنه يعمل بشكل جيد. يبدو أنه هو علة الثعبان.

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