探索Python模块自动搜索路径(Python安装rospy模块)
本篇文章給大家帶來的內容是關于探索Python模塊自動搜索路徑,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
最近在學習python的C++擴展(pybind11),寫完一個擴展模塊之后,想要在自己的環境中以后都能自動導入這個模塊,而不用手動去添加路徑(修改sys.path)應該怎么弄?以前最開始學習Python的時候看過這塊內容,然而時間長了總會記憶不清,就再回顧了一遍。
概括來說,Python的自動搜索路徑是這樣的:
-
程序的根目錄
-
PYTHONPATH環境變量設置的目錄
-
標準庫的目錄
-
任何能夠找到的.pth文件的內容
-
第三方擴展的site-package目錄
最終,這五個部分的拼接成為了sys.path,其中第一和第三、第五部分是自動定義的。
根目錄(自動)
Python首先在根目錄搜索要導入的文件。這個根目錄的入口依賴于你怎么運行代碼;當你運行一個程序時,這個入口就是程序運行入口(top-level script file)文件所在的目錄;當你用交互式窗口期運行代碼時,這個入口就是你所在的工作目錄。
PYTHONPATH 目錄(可配置的)
接下來,python會搜索PYTHONPATH環境變量里列出的所有目錄,因為這個搜索在標準庫之前,所以要小心不要覆蓋一些標準庫的同名模塊。
標準庫目錄(自動)
這個沒什么好說的,pyton會自動搜尋標準庫模塊所在的目錄。
.pth文件列出的目錄(可配置的)
這是用的比較少的一個python特性。它允許用戶以每行一個的方式列出搜索路徑,它和PYTHONPATH環境變量的不同是會在標準庫路徑之后搜索;而且它是針對這個python安裝的,而不是針對用戶的(環境變量會隨著用戶的不同而不同)。 那么,.pth文件應該放在哪里呢?可以通過以下代碼找到.pth文件可以放置的位置:
import site site.getsitepackages()
登錄后復制
在我的環境中,輸出如下:
['C:\\Python27', 'C:\\Python27\\lib\\site-packages']
登錄后復制
Lib/site-package目錄(自動)
最后,python會在搜索路徑上自動加上site-packages目錄,這一般是第三方擴展安裝的地方,一般是由distutils工具發布的。
舉例說明
講了這么多,現在我們舉個小栗子。我的python環境是windows7 + python 2.7。
1. 首先,我們新建一個環境變量PYTHONPATH,在里面加上目錄E:\python_extensions
-
然后,我們在
C:\Python27目錄下新增一個add.pth文件,里面的內容是:E:\python_extensions2 -
最后,我們在
E:\python_extensions和E:\python_extensions2目錄下分別新建模塊test.py和test2.py,里面都寫了一個test方法。
我們打開交互解釋器,結果如下:
可以看到,我們可以直接導入這兩個目錄下的模塊了。查看sys.path:
嗯,這兩個路徑已經自動加入sys.path變量了。
總結
本文簡要回顧了python的自動搜索路徑,以及如何配置一些搜索路徑以使得python在啟動時能夠將某些目錄加到搜索路徑。當然,這些自動搜索路徑隨著python版本和實現的不同會有細微差別,但對于目前的使用來說已經夠了。
以上就是探索Python模塊自動搜索路徑的詳細內容,更多請關注風君子博客其它相關文章!
總結
以上是生活随笔為你收集整理的探索Python模块自动搜索路径(Python安装rospy模块)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql查询怎么设置降序(Mysql之
- 下一篇: html如何设置标题居中