網站首頁 編程語言 正文
如何導入自己的模塊
在實際的編程生活當中,我們除了會去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-07-01 .NET設計模式之UML類圖介紹_基礎應用
- 2021-12-12 Android如何監測文件夾內容變化詳解_Android
- 2022-10-16 go?swagger生成接口文檔使用教程_Golang
- 2022-06-21 Android?Studio實現下拉列表效果_Android
- 2022-05-23 .NET異步編程模式的三種類型介紹_實用技巧
- 2022-11-23 Python實現定時任務利器之apscheduler使用詳解_python
- 2022-08-30 Spark中緩存和檢查點的區別
- 2022-11-10 C++?TCP網絡編程詳細講解_C 語言
- 最近更新
-
- 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同步修改后的遠程分支