python引入导入自定义模块和外部文件
項(xiàng)目中想使用以前的代碼,或者什么樣的需求致使你需要導(dǎo)入外部的包
如果是web 下,比如說django ,那么你新建一個app,把你需要導(dǎo)入的說用東東,都寫到這個app中,然后在setting中的app也配上基本就ok了
如果是本地代碼,可以有幾種方式,
1、這種最簡單,也可能最不實(shí)用,將你的外部文件放到跟需要調(diào)用外部文件的文件同一個包下,同一目錄
folder
------toinvoke.py
------tobeinvoded.py
這樣在toinvoke.py 中引入
import toveinvoked 或 from tobeinvoked import *
即可
2、你的其他文件不是單個文件,或者不能如上所說放到同一目錄下,而是在不同目錄中,子目錄
folder
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這種情況,現(xiàn)在folder 下新建一個__init__.py 的空文件,此時的folder不再是一個普通的文件夾,而是一個包 package,現(xiàn)在像這樣
folder #文件夾 現(xiàn)在的性質(zhì)為一個python包package?
------__init__.py
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
3、同理,如果是如下的情況,folderB中的模塊要調(diào)用folderA中的模塊,方法同上,有什么改變,你已經(jīng)知道了
?
folderA?
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
?
folderB?
--------toinvoke.py
?
這樣在toinvoke.py 中引入
?
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
4、將要被調(diào)用的代碼拷貝到$PYTHONHOME$\Lib\site-packages 下面,這個就跟Eclipse插件安裝差不多
?
5、在$PYTHONHOME$\Lib\site-packages 下面新建一個.pth文件,比如說是MyPackage.pth,里面的內(nèi)容是你的包的絕對路徑比如:E:/PythonPrj
那么,在E:/PythonPrj下的所有包都可以按照包所在的相對路徑引入,這個跟Eclipse插件安裝的link 方式差不多
6、跟上面的差不多,也可以加個環(huán)境變量,這個就不多說了
?
總結(jié)、看看Python的包搜索路徑
Python會在以下路徑中搜索它想要尋找的模塊:
1. 程序所在的文件夾
2. 標(biāo)準(zhǔn)庫的安裝路徑
3. 操作系統(tǒng)環(huán)境變量PYTHONPATH所包含的路徑
?
將自定義庫的路徑添加到Python的庫路徑中去,有如下兩種方法:
1. 動態(tài)的添加庫路徑。在程序運(yùn)行過程中修改sys.path的值,添加自己的庫路徑
import sys
sys.path.append(r'your_path')?
2. 在Python安裝目錄下的\Lib\site-packages文件夾中建立一個.pth文件,內(nèi)容為自己寫的庫路徑。示例如下
E:\\work\\Python\\http
E:\\work\\Python\\logging
總結(jié)
以上是生活随笔為你收集整理的python引入导入自定义模块和外部文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS中this关键字
- 下一篇: 【C语言重点难点精讲】C语言预处理