python引用模塊
Ⅰ 怎麼從python引入自己的模塊
1.如果導入的模塊和主程序在同個目錄下,直接import就行了
2.如果導入的模塊是在主程序所在目錄的子目錄下,可以在子目錄中增加一個空白的__init__.py文件,該文件使得python解釋器將子目錄整個也當成一個模塊,然後直接通過「import 子目錄.模塊」導入即可。
3.如果導入的模塊是在主程序所在目錄的父目錄下,則要通過修改path來解決,有兩種方法:
(1)通過」import sys,sys.path.append('父目錄的路徑')「來改變,這種方法屬於一次性的,只對當前的python解釋器進程有效,關掉python重啟後就失效了。
(2)直接修改環境變數:在windows中是 「 set 變數=『路徑』 」 例如:set PYTHONPATH=『C:\test\...』 查看是否設置成功用echo %PYTHONPATH%,而且進到python解釋器中查看sys.path,會發現已經有了新增加的路徑了。這種方式是永久的,一次設置以後一直都有效。在linux中是 "export 變數=『路徑』 「,查看是" echo $變數 "
通過修改path是通用的方法,因為python解釋器就是通過sys.path去一個地方一個地方的尋找模塊的。
Ⅱ python 中 用import 引用模塊,模塊 與 python 啟動的位置在同一目錄,為何還是引用不了
你提供的信息比較少,不好判斷問題。一般情況下,引用同一目錄下的模塊是不會有問題的。你的模塊是否命名為*.py?
請做以下嘗試:
切換到模塊所在目錄,輸入python進入交互模式,然後再import,看看是否導入成功。如果不成功,請貼出錯誤信息。
也可以嘗試加一個環境變數,假設模塊存放的目錄是/home/admin/test:
exportPYTHONPATH=/home/admin/test
然後再執行導入。這個變數中的地址會自動附加在PATH環境變數內,作為模塊的查找路徑。
Ⅲ Python中怎樣將一個類引入到另一個模塊中
如果要引入的類在同一個文件中,直接使用即可,如果不在一個py文件中,則先import
這個類所在的py文件,然後直接使用
如,類a在moleA.py文件中,則先import
moleA
使用方式為moleA.a
Ⅳ python 兩模塊互相引用的問題
如果你執行father的話,這個時候father是__main__,不是mole,所以會執行到father的from son import *,這個時候python會去執行son.py,而son.py一開始就是from father import *,所以python又去執行father.py,因為father.py的一開始是from son import *,並且因為之前執行過了,所以這個時候son已經在sys.moles裡面,所以python不會重新執行son.py,而只是把sys.moles裡面的son返回給你,所以當執行到father.py的print(x)的時候,還沒有執行son.py裡面的x=6,所以會有找不到x的attribute error。
解決的辦法就是最好根本不要有circular import。
Ⅳ python導入模塊的方法有哪些
方法一
import modname
模塊是指一個可以交互使用,或者從另一Python 程序訪問的代碼段。只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。模塊可以通過這種方法來使用其它模塊的功能。
用import語句導入模塊,就在當前的名稱空間(namespace)建立了一個到該模塊的引用.這種引用必須使用全稱,也就是說,當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用 funcname,而應該使用 modname.funcname
方法二
from modname import funcname
from modname import fa, fb, fc
或者
from modname import *
與第1種方法的區別:funcname 被直接導入到本地名字空間去了,所以它可以直接使用,而不需要加上模塊名的限定* 表示,該模塊的所有公共對象(public objects)都被導入到 當前的名稱空間,也就是任何只要不是以」_」開始的東西都會被導入。
modname沒有被定義,所以modname.funcname這種方式不起作用。並且,如果funcname如果已經被定義,它會被新版本(該導入模塊中的版本)所替代。如果funcname被改成指向其他對象,modname不能不會覺察到。
建議:
1)如果你要經常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用 from mole import
2)如果你想要有選擇地導入某些屬性和方法,而不想要其它的,使用 from mole import
3)如果模塊包含的屬性和方法與你的某個模塊同名,你必須使用import mole來避免名字沖突
4)盡量少用 from mole import * ,因為判定一個特殊的函數或屬性是從哪來的有些困難,並且會造成調試和重構都更困難。
方法三
內建函數__import__()
除了前面兩種使用import關鍵字的方法以外,我們還可以使用內建函數 __import__() 來導入 mole。兩者的區別是,import 後面跟的必須是一個類型(type),而__import__() 的參數是一個字元串,這個字元串可能來自配置文件,也可能是某個表達式計算結果。例如:
mymole = __import__ (』mole_name』)
附註:
1)模塊的內容都放在一個模塊文件中,如 mymole 的內容應該放在PYTHONPATH 目錄下的一個mymole.py中,C實現的除外
2)包可以將幾個模塊名稱空間組織起來, 如A.b 就表示在包A中的一個子模塊b
可以單獨導入某一個子模塊,如Python文檔中給出的例子
import sound.effects.echo
這樣必須使用全稱對裡面的對象進行引用,如
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
還可以使用下面的語句來載入echo子模塊
from Sound.Effects import echo
它在沒有包前綴的情況下也可以使用, 所以它可以如下方式調用:
echo.echofilter(input, output, delay=0.7, atten=4)
不主張從一個包或模塊中用import * 導入所有模塊,因為這樣的通常會導致可讀性很差。
from Package import specific_submole的用法並沒有錯,實際上這還是推薦的用法,除非導入的模塊需要使用其它包中的同名子模塊(the importing mole needs to use submoles with the same name from different packages).
綜上所述,一般情況應該使用import , 但有幾個例外
1)mole文檔告訴你要用from-import的
2)導入一個包組件。需要一個包裡面的某個子模塊,一般用from A.b import c比import A.b.c 更方便 且不會冒混淆的危險.
Ⅵ python中的import引用不了模塊
你好,我也是python學習者。 python導入模塊有兩種方式。
正如你圖片展示 的一樣,import 有兩種方式,如下
fromlianxiimport*#這種方式你已經成功了
importlianxi#這種方式調用函數的方法是lianxi.print_models
總結:第二方式,可以將lianxi 看作一個對象,python中對象方法的調用方式就是" ."
如果不明白,可以看這個鏈接也是我回答的,有圖片比較清楚網頁鏈接
Ⅶ python 外部模塊引用提示找不到模塊
你的路徑應該不對,重新加入路徑
pycharm是Python的IDE中一個會自動生成路徑來找到指定文件的工具(一般為同一文件夾下才會自動生成路徑)
其他IDE工具就不行,命令行也不行
Ⅷ python如何引用其他模塊中類的方法中的變數
沒法實現。
原因:
你的tmp,只是class a中的一個函數fun內的臨時變數
所以無法直接被外部調用。
並且只有fun函數執行時才存在,函數結束時,就不存在了。
關於變數的作用范圍,你可以參考:
【整理】Python中變數的作用域(variable scope)
想要可以被調用,可以試試:
改為:
#A.py
Class a()
tmp='123'
def fun()
。。。。。。
然後再去:
import A
print A.tmp
注意:
此時,tmp就是class a中的全局變數了。
Ⅸ python 怎麼調用文件中的模塊
Python 模塊
模塊讓你能夠有邏輯地組織你的Python代碼段。
把相關的代碼分配到一個 模塊里能讓你的代碼更好用,更易懂。
模塊也是Python對象,具有隨機的名字屬性用來綁定或引用。
簡單地說,模塊就是一個保存了Python代碼的文件。模塊能定義函數,類和變數。模塊里也能包含可執行的代碼。
例子
一個叫做aname的模塊里的Python代碼一般都能在一個叫aname.py的文件中找到。下例是個簡單的模塊support.py。
def print_func( par ):
print "Hello : ", par
return
import 語句
想使用Python源文件,只需在另一個源文件里執行import語句,語法如下:
import mole1[, mole2[,... moleN]
當解釋器遇到import語句,如果模塊在當前的搜索路徑就會被導入。
搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。如想要導入模塊support.py,需要把命令放在腳本的頂端:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 導入模塊
import support
# 現在可以調用模塊里包含的函數了
support.print_func("Zara")
Ⅹ 詳解Python中import方法引入模塊
在python用import或者from...import或者from...import...as...來導入相應的模塊,作用和使用方法與C語言的include頭文件類似。其實就是引入某些成熟的函數庫和成熟的方法,避免重復造輪子,提高開發速度。
python的import方法可以引入系統的模塊,也可以引入我們自己寫好的共用模塊,這點和php非常相似,但是它們的具體細節還不是很一樣。因為php是在引入的時候指明引入文件的具體路徑,而python中不能夠寫文件路徑進行引入。
下面總結一下import的幾種情況:
python包含子目錄中的模塊方法比較簡單,關鍵是能夠在sys.path裡面找到通向模塊文件的路徑。
下面將具體介紹幾種常用情況:
(1)主程序與模塊程序在同一目錄下:
如下面程序結構:
`-- src
|-- mod1.py
`-- test1.py
若在程序test1.py中導入模塊mod1, 則直接使用import mod1或from mod1 import *;
(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
如下面程序結構:
`-- src
|-- mod1.py
|-- mod2
| `-- mod2.py
`-- test1.py
若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件(也可以在該文件中自定義輸出模塊介面); 然後使用 from mod2.mod2 import * 或import mod2.mod2.
(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊
如下面程序結構:
`-- src
|-- mod1.py
|-- mod2
| `-- mod2.py
|-- sub
| `-- test2.py
`-- test1.py
若在程序test2.py中導入模塊mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然後調用方式如下:
下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之後執行python test2.py
而test1.py是在cd src;之後執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。
import sys
sys.path.append("..")
import mod1
import mod2.mod2