كيف يمكنني معرفة مسار بيثون الخاص بي باستخدام بيثون؟

StackOverflow https://stackoverflow.com/questions/1489599

سؤال

كيف يمكنني معرفة الأدلة التي يتم سردها في نظامي PYTHONPATH متغير، من داخل برنامج نصي بيثون (أو قذيفة تفاعلية)؟

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

المحلول

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

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

نصائح أخرى

ربما تريد أيضا هذا:

import sys
print(sys.path)

أو كإطار واحد من المحطة:

python -c "import sys; print('\n'.join(sys.path))"

لا يبدو أن تحرير الإجابة الأخرى. لديه خطأ بسيط في أنه هو Windows فقط. الحل الأكثر عام هو استخدام OS.SEP على النحو التالي:

قد يتضمن Sys.Path العناصر التي ليست على وجه التحديد في متغير بيئة PythonPath الخاص بك. للاستعلام عن المتغير مباشرة، استخدم:

import os
os.environ['PYTHONPATH'].split(os.pathsep)

PythonPath هو متغير بيئة مهمته هي قائمة الدلائل. بمجرد الإعداد، يتم استخدامه من قبل Python للبحث عن الوحدات المستوردة، جنبا إلى جنب مع STD الأخرى. ودليل مكتبة الحزب الثالث المدرجة في بيثون "sys.path".

كأي متغيرات بيئة أخرى، يمكنك إما تصديرها في قذيفة أو في ~ / .bashrc، انظر هنا. وبعد يمكنك الاستعلام عن OS.ENVIRY ['pythonpath'] من أجل قيمتها في بيثون كما هو موضح أدناه:

$ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"

إذا كان محددا في قذيفة كما

$ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite

ثم النتيجة =>

/home/Documents/DjangoTutorial/mysite
['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

نتيجة أخرى =>

PYTHONPATH is not defined

لتعيين PythonPath إلى مسارات متعددة، انظر هنا.

لاحظ أن المرء يمكنه إضافة أو حذف مسار بحث عبر sys.path.insert ()، del أو reclimed () في وقت التشغيل، ولكن ليس من خلال OS.Environ []. مثال:

>>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
>>> 'PYTHONPATH' in sorted(os.environ)
True
>>> sys.path // but Not there
['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']

>>> sys.path.insert(0,os.environ['PYTHONPATH'])
>>> sys.path // It's there
['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
>>> 

باختصار، PythonPath هي طريقة واحدة لتحديد مسار (مسار البحث عن البحث PYTHON للمستوردين في Sys.Path. يمكنك أيضا تطبيق عمليات قائمة مباشرة على SY.Path دون مساعدة من PythonPath.

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