網站首頁 編程語言 正文
如何導入自己的模塊
在實際的編程生活當中,我們除了會去import已經存在的包外,當然還會偶爾自定義一些模塊,然后來導入,其實一般而言,自定義的模塊也就是一系列的腳本,具體的,自己寫好了腳本,然后導入,導入的情況分為以下情況:
1.自定義模塊與所需要調用自定義模塊的文件在同一文件夾下
這時的調用就較為簡單了,直接導入即可
比如說我想要在learnpandas中導入m1.py,只需要在learnpandas腳本開頭聲明import m1.py即可
2.自定義模塊與所需要調用自定義模塊的文件不在同一文件夾下
其實這個的話,如果不怕麻煩的話可以用1中的方法,把需要導入的文件一個一個手動拖到當前文件夾中,,,當然這個方法時比較復雜的,尤其是要導入的文件較多的時候,,,,
這個時候有一個更聰明的方法
假設下圖是我們需要導入的文件目錄
在這種情況下,我們在folder中新建一個__init__.py文件,此時的folder不再是一個普通的文件夾,而是一個包 package
在這個時候,想導入哪一個文件的話就只需在文件開頭import folder.filename即可(記得要先將自定義庫路徑添加到Python的庫路徑中)
3.找到本地庫的路徑
然后將文件拷進去即可
4.手動給python添加搜索路徑
具體做法是:
在python安裝目錄的\Lib\site-packages文件夾中建立一個.pth文件,內容為自己寫的庫絕對路徑
- - - -?- - - - - - - - - - - - - 分割線- - - -?- - - - - - - - - - - - -
將自定義庫的路徑添加到Python的庫路徑中去,有如下兩種方法:
1. 動態的添加庫路徑。在程序運行過程中修改sys.path的值,添加自己的庫路徑
import sys sys.path.append(r'your_path')?
2. 在Python安裝目錄下的\Lib\site-packages文件夾中建立一個.pth文件,內容為自己寫的庫路徑。
示例如下
E:\\work\\Python\\http
E:\\work\\Python\\logging
- - - -?- - - - - - - - - - - - - 分割線- - - -?- - - - - - - - - - - - -
在這里說一句Python的包搜索路徑:
Python會在以下路徑中搜索它想要尋找的模塊:
1. 程序所在的文件夾
2. 標準庫的安裝路徑
3. 操作系統環境變量PYTHONPATH所包含的路徑
導入本地模塊報錯的問題
很多時候,我們在寫一個python項目時,都會分模塊來寫,在一個模塊中導入自己寫的另一個模塊,最后在寫一個啟動程序,但運行啟動程序時往往會報錯說找不到你寫的模塊,對此,這里教大家一種通用且正規的python項目組織結構,基本都能解決這種找不到本地模塊的問題。
以下圖為例說明
首先是創建一個項目文件夾:myproject ,這里面包括啟動文件start.py、README.md文件以及你的項目文件myproject文件夾。這就是基本的項目結構。
這樣你就能在myproject文件夾里面的py文件里使用相對路徑導入其他文件夾下的模塊了。
其實,Scrapy項目的目錄結構也大致是這樣的,大家可以看看創建scrapy項目時的目錄結構。
mytask.py
這里就很方便使用 “.” 和 “..” 來表示當前路徑和上一級路徑了start.py
這里要注意,啟動文件start.py中不能使用".“和”.."等來導入本地模塊,因為主模塊(啟動文件)不能使用相對導入。
最后,只要在命令行輸入python start.py就可以運行程序了。
原文鏈接:https://blog.csdn.net/bai_and_hao_1314/article/details/84498231
相關推薦
- 2022-06-29 Android實用小技巧之利用Lifecycle寫出更好維護的代碼_Android
- 2022-04-28 Python的命令行參數實例詳解_python
- 2022-10-31 Android虛擬機與類加載機制詳情_Android
- 2022-03-30 一篇文章帶你了解C語言的選擇結構_C 語言
- 2022-12-21 Python?eval()和exec()函數使用詳解_python
- 2022-08-28 隔代獲取dom,多個commit合并成一個,計算屬性完整寫法
- 2022-07-29 Golang學習之反射機制的用法詳解_Golang
- 2023-03-04 Google大佬都用的廣播goAsync源碼分析_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支