كيف يمكنني معرفة مسار بيثون الخاص بي باستخدام بيثون؟
-
18-09-2019 - |
سؤال
كيف يمكنني معرفة الأدلة التي يتم سردها في نظامي 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.