簡體   English   中英

如何獲取 Python 導入的庫的文件位置

[英]How do I get the file location of libraries imported by Python

考慮到這行 Python 代碼:

import foo

然后如何找到包含要在 foo 中執行的源代碼的文件在磁盤上的位置?

(我在Win7上)

您可以在中找到信息

foo.__file__

請注意,並非所有模塊都來自文件。 一些模塊也直接編譯到解釋器中,這些模塊沒有__file__屬性。

解釋器中包含的模塊列表可以在sys.builtin_module_names中找到。

當模塊沒有與文件系統中文件的一對一映射時,我不確定__file__的值。 具體來說,如果它正在加載在 ZIP 文件中找到的模塊,我不確定__file__會是什么樣子。 (當我需要這樣的映射時,我使用了帶有 ("path/to/file.zip", "path/within/zip/module.pyc") 的元組,但這是手動遍歷 sys.path 的結果。 ) 如果只是將__file__設置為None ,我不會感到驚訝。

當關於將加載哪個同名模塊存在問題時,它始終是在sys.path上找到的第一個模塊。

在您首次導入 package 之前,可以使用sys.path.insert(0, some_dir)手動調整。 (在環境中,這是使用PYTHONPATH設置的。)

理想情況下,您只需檢查PYTHONPATH和/或sys.path即可找出正在使用的內容。 如果加載了錯誤的,修復它的唯一方法是使用PYTHONPATHsys.path

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM