當前位置:首頁 » 編程語言 » importpython路徑

importpython路徑

發布時間: 2025-02-15 21:09:55

python import 路徑問題 新手

以下為純手打,下面給幾個demos:


說明:

moles所在的目錄在python里叫package, 下面是一個名為 IsDir的package(實際上就是一個目錄), package下面有4個moles(A, B, C, D)和一個__init__.py文件,目錄結構如下:

IsDir/
A.pyB.pyC.pyD.py__init__.py

大體來講,有兩種方法可以調用某目錄下(包括遞歸目錄)的moles.


一. __init__.py為空時


1.1以下為調用moleA的代碼:

#!/usr/bin/envpython
fromIsDirimportA
A.say()

輸出:

ThisismoleA!

1.2 如果想調用moleA,B,C,D呢?

方法1.

#!/usr/bin/envpython
fromIsDirimportA
fromIsDirimportB
fromIsDirimportC
fromIsDirimportD
A.say()
B.say()
C.say()
D.say()

方法2.

#!/usr/bin/envpython
importIsDir.A
importIsDir.B
importIsDir.C
importIsDir.D
fromIsDirimport*
A.say()
B.say()
C.say()
D.say()

錯誤示例1:

#!/usr/bin/envpython
importIsDir.A
A.say()

錯誤示例2:

#!/usr/bin/envpython
fromIsDirimport*
A.say()

錯誤的原因:

IsDir/目錄下__init__.py為空時,直接importIsDir.A或者fromIsDirimport*是無效的.

從官方文檔里可以看到,__init__.py 里沒有__all__=[mole1,mole2,...]時,

fromIsDirimport* 只能保證IsDir被imported, 所以此時IsDir里的moles是無法被imported,
此時只有如我上面所寫的代碼所示才能正確執行,否則是錯誤的。官方解釋為:importIsDir.A並無任何意義,只有接著執行fromIsDirimport*後,importIsDir.A語句里的moleA才會被定義,所以完整的調用因改為: 1. import IsDir.A 2. from IsDir import *。

二. __init__.py用all=[...]指定該package下可以被imported進去的mole


__init__.py里寫入如下內容:

%catIsDir/__init__.py
__all__=["A","B"]

然後使用之:

#!/usr/bin/envpython
fromIsDirimport*
A.say()
B.say()

結果:

%pythontest.py
ThisismoleA!
ThisismoleB!

錯誤實例:

#!/usr/bin/envpython
fromIsDirimport*
C.say()

以上示例之所以錯誤,是因為C並沒有在__all__=["A","B"]里制定,由此可見,packageIsDir下面的__init__.py里,__all__=[...]具有隔離moles的作用。


補充:

mole A, B, C,D里我分別只定義了一個method, 例如,以下為mole A的code:

%catIsDir/A.py
defsay():
print"ThisismoleA!"

後記:

謝謝這位同學,回答你的問題感覺很有收獲,順便又把python溫習了一遍。回頭把這些總結貼到我的blog上以上為手寫,望採納,共勉。


=============================================================


老子寫了這么多居然採用了另一個簡陋的答案,mlgb的,枉我熬夜給你答題。這種白痴樓主就不配在這里問問題。

❷ 出現「python import路徑」問題,該如何處理

1.python import模塊時, 是在sys.path里按順序查找的;

2.sys.path是一個列表,裡面以字元串的形式存儲了許多路徑;

3.當你增加里新的放模塊的目錄時,可以from sys import path path.append(r" 路徑 ")。

❸ 在Python 中如何使用 import 來調用其他模塊模塊放置的路徑是...

Python 會自動從 sys.path 路徑列表裡的所有路徑里尋找你要 import 的模塊,這個路徑列表可以通過在終端輸入以下命令查看:
import sys
sys.path

如果你要調用其他路徑的文件,可以先在上述列表中加入新的路徑,以你提到的情況為例:
import sys
sys.path.insert(0, '/')
import test

一般情況下,一個項目的所有文件應該在同一個項目文件夾中。這時,有其他解決辦法,比如在項目的下級目錄里放置 __init__.py 文件,然後用 from 文件夾 import 文件名 的方式來引入模塊。

這種方式使得文件結構更加清晰,便於管理和維護。例如,假設你有一個名為 myproject 的項目,其中包含一個名為 mymole 的文件夾,該文件夾里有多個 Python 文件,你可以這樣導入文件:

from mymole import filename

這種方式不僅簡化了導入過程,還能讓你更容易地了解項目的結構和模塊之間的關系。實際上,使用這種方式可以讓你的代碼更具模塊化,有利於團隊協作和代碼重用。

當然,如果你需要頻繁地在不同的項目路徑中導入模塊,維護 sys.path 列表可能會變得繁瑣。這時,你可以考慮使用虛擬環境來管理你的項目依賴,或者在項目的根目錄下創建一個 setup.py 文件,通過這個文件來管理項目的安裝和導入路徑。

總的來說,合理地管理模塊路徑和導入方式,可以大大提高 Python 項目的開發效率和代碼質量。希望這些信息對你有所幫助。

我是新手,如果有更好的建議或更正的地方,請高手們指教。

❹ python獲取當前路徑的方法python獲取目錄下文件路徑

import os,glob

cur_path=os.getcwd()+"\input\*.*"##當前路徑或文件

output_path=os.getcwd()+"\output"##輸出路徑

print(cur_path)

for filename in glob.glob(cur_path): ##顯示文件包括路徑

r,name =os.path.split(filename) ##將完整文件,包括路徑進行分割

print(filename)

print(r)

print(name)

熱點內容
相冊一直出現緩存圖片怎麼辦 發布:2025-02-16 05:09:05 瀏覽:125
安卓手機系統如何改變語言 發布:2025-02-16 05:07:49 瀏覽:506
無授權源碼 發布:2025-02-16 04:50:47 瀏覽:508
怎麼看手機配置還是原裝屏幕 發布:2025-02-16 04:50:06 瀏覽:857
財務王賬號密碼哪裡有 發布:2025-02-16 04:50:05 瀏覽:966
awsftp 發布:2025-02-16 04:34:17 瀏覽:484
資料庫結點 發布:2025-02-16 04:31:01 瀏覽:541
erp賬號密碼保存在哪裡 發布:2025-02-16 04:17:45 瀏覽:516
遺傳演算法r語言 發布:2025-02-16 04:12:55 瀏覽:160
構造筋怎麼配置 發布:2025-02-16 04:07:10 瀏覽:497