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