Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Python memulakan senarai sys.path?

Bagaimanakah Python memulakan senarai sys.path?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 19:05:30261semak imbas

How does Python initialize the sys.path list?

Di manakah sys.path Python Dimulakan Daripada?

sys.path Python, yang mengandungi direktori tempat Python mencari modul untuk diimport, menjalani proses permulaan yang kompleks untuk menentukan nilai awalnya. Berikut ialah pecahan cara ia disediakan:

sys.executable Determination

  • Python mencari lokasi fizikalnya pada sistem fail dan menggunakannya sebagai nilai untuk sys .executable.

sys.exec_prefix dan sys.prefix Initialization

  • Python membaca fail pyvenv.cfg dalam direktori yang sama seperti sys.executable atau satu direktori ke atas.
  • Jika fail wujud, ia mengekstrak maklumat berikut:

    • Pada Windows: Jika "applocal = true," sys.prefix ditetapkan kepada direktori yang mengandungi sys.executable. Jika tidak, ia menggunakan "home = " arahan.
    • Pada Linux/Mac: Sys.exec_prefix ditetapkan kepada "home = " arahan. Sys.prefix juga ditetapkan kepada nilai ini melainkan jika pembolehubah persekitaran PYTHONHOME wujud.
  • Jika pyvenv.cfg tidak wujud atau tidak mengandungi maklumat yang diperlukan, Python cuba menentukan sys.exec_prefix dan sys.prefix dengan berjalan ke belakang dari sys.executable, mencari fail mercu tanda tertentu.

sys.path Initialization

  1. Python menambah direktori skrip yang sedang dilaksanakan ke sys.path.
  2. Pada Linux/Mac, ia menambah pembolehubah persekitaran PYTHONPATH, jika ditetapkan.
  3. Ia termasuk zip laluan fail (/lib/python35.zip atau path/to/python.zip).
  4. Pada Windows dan tanpa "applocal = true" dalam pyvenv.cfg, ia menambah subkunci daripada "HK_CURRENT_USERSoftwarePythonPythonPythonPython ;DLLVersion>PythonPath."
  5. Pada Windows dan tanpa "applocal = true" dalam pyvenv.cfg, dan jika sys.prefix tidak dijumpai, ia menambah "kandungan teras" "HK_CURRENT_USERSoftwarePythonPythonCoreth
  6. Pada Windows dan tanpa "applocal = true" dalam pyvenv.cfg, ia menambahkan subkunci daripada "HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath."
  7. Pada Windows python dan tanpa "apploven = true" .cfg, dan jika sys.prefix tidak ditemui, ia menambah "kandungan teras" "HK_LOCAL_MACHINESoftwarePythonPythonCorePythonPath."
  8. Pada Windows dan dengan PYTHONPATH tidak ditetapkan, dan awalan pendaftaran tidak ditemui kini, ia menambah nilai masa kompilasi relatif PYTHONPATH.
  9. Ia menggabungkan laluan dalam makro masa kompilasi PYTHONPATH berbanding awalan sys.prefix yang ditemui secara dinamik.
  10. Pada Linux/Mac, ia menambah sys.exec_prefix. Pada Windows, ia menambah direktori yang digunakan untuk mencari sys.prefix.
  11. Pada Windows dan tanpa "applocal = true" dalam pyvenv.cfg, ia cuba mencari sys.prefix dengan mencari fail mercu tanda dalam sys.path . Jika tidak berjaya, ia meninggalkan sys.prefix kosong.

Pengubahsuaian Tambahan oleh Modul Tapak

  • Modul tapak mengubah suai sys.path dengan menambah direktori berdasarkan sys.prefix, sys.exec_prefix dan laluan khusus platform.
  • Ia memeriksa laluan baharu ini untuk fail konfigurasi, yang berpotensi menambah lebih banyak laluan.

Atas ialah kandungan terperinci Bagaimanakah Python memulakan senarai sys.path?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn