㈠ 怎樣把python代碼嵌入到C程序
步驟1:安裝Python開發包
由於需要訪問Python/C API,首先安裝Python開發包。
在Debian,Ubuntu或Linux Mint中:
在CentOS,Fedora或RHEL中:
安裝成功後,Python頭文件在/usr/include/python2.7。根據Linux發行版的不同,確切的路徑可能是不相同的。例如,CentOS 6中是/usr/include/python2.6。
步驟2:初始化解釋器並設置路徑
C中嵌入Python的第一步是初始化Python解釋器,這可以用以下C函數完成。
初始化解釋器後,需要設置你的C程序中要導入的Python模塊的路徑。例如,比如你的Python模塊位於/usr/local/moles。然後使用以下C函數調用來設置路徑。
步驟3:數據轉換
C中嵌入Python最重要的方面之一是數據轉換。從C中傳遞數據到Python函數,需要首先將數據從C數據類型轉換到Python數據類型。Python/C API提供各種函數來實現這。例如,轉換C字元串到Python字元串,使用PyString_FromString函數。
另外一個類似函數PyInt_FromLong,將C中long數據類型轉換為Python int。每個Python/C API函數返回一個PyObject類型的引用。
步驟4:定義一個Python模塊
當你想嵌入Python代碼到另一種語言如C,該代碼需要被寫成Python模塊,然後用另一種語言「導入」。所以讓我們來看看如何在C中導入Python模塊。
為了進行說明,我們實現一個簡單的Python模塊例子如下:
以上的Python函數有一個字元串作為參數並返回兩個重復的字元串。例如,如果輸入字元串是「cyberpersons」,該函數返回'cyberpersonscyberpersons'。此模塊文件命名為「printData.py」並將它放在前面聲明的Python模塊目錄中(/usr/local/moles)。
步驟5:載入一個Python模塊
現在你已經定義了Python模塊,是時候在C程序中載入它了。導入模塊的C代碼看起來像這樣:
步驟6:構建函數的參數
當載入一個模塊時,可以調用模塊中定義的Python函數。通常,我們需要傳遞一個或多個參數到一個Python函數。我們必須構建一個Python元組對象,它包括Python函數中的參數。
在我們的例子中,printData函數定義帶一個參數的模塊。因此,我們構建一個大小是一的Python元組對象如下。我們可以使用PyTuple_SetItem設置元組對象的每個項。
我們已經成功構建一個參數傳遞到函數調用,是時候從C程序調用python函數了。
步驟7:調用Python函數
一旦成功創建Python元組對象作為函數參數,我們可以調用一個帶參數的Python函數。為此,通過使用PyObject_GetAttrString首先獲得模塊中定義的函數的引用,然後使用PyObject_CallObject調用該函數。例如:
步驟8:錯誤檢查
避免運行時錯誤的常見方法是檢查函數的返回值並根據返回值採取適當的行動。類似於C程序中的全局變數errno,Python/C API提供一個全局指示符,它報告最後發生的錯誤。當Python/C API函數失敗,全局指示符設置為指示錯誤,並且PyErr_Print可以用於顯示相應的人類可讀的trackback。例如:
在你的應用程序中,你可以輕松地將各種錯誤檢查。
這里是完整的C程序,它如本教程描述的嵌入Python代碼。
步驟9:編譯和執行
保存以上代碼到finalCode.c,並且鏈接Python庫(-lpython2.7)編譯該代碼。根據發行版的不同,可能使用不同的版本(例如,-lpython2.6)。
㈡ python怎麼導入庫包
Python庫的導入 import A 為最簡單的引入對應的包。
㈢ Python怎麼導入文件
Python的import包含文件功能就跟PHP的include類似,但更確切的說應該更像是PHP中的require,因為Python里的import只要目標不存在就報錯程序無法往下執行。要包含目錄里的文件,PHP中只需要給對路徑就OK。Python中則不同,下面來看看這個例子。
目錄結構:
重新執行a.py,一切OK!
㈣ 在vs上怎麼用python將一個程序引入另一個程序
python中調用另一個程序有多種不同方式,一種是調用本文件下的某個函數來實現調用,另一種是調用模塊或包文件下的函數實現調用,還有一種是通過類方法的方式調用類定義的某段程序。
自身函數的調用時相當方便的,在定義好了函數以後直接按定義的格式調用即可,出現的錯誤為參數數量不匹配。通過包或模塊調用相對自身函數調用比較復雜,需要提前導入包或模塊,常用的方法為import或者fromimport,導入成功的前提是對應的包或模塊在python路徑之下,可以通過sys.path(sys為系統內置模塊可以直接使用importsys導入)來查看python路徑。以導入第三方包文件requests為例。通過類方法的調用需要在調用之前,實例化一個類對象,通過這個類對象來調用類方法,注意第三個方法為私有方法,不允許類外部訪問。
㈤ Python怎麼導入xlrd
python中導入xlrd的方法:
安裝xlrd
在python官網下載對應python版本的xlrd安裝包,並將程序包解壓,並放在python->Lib文件下
然後在cmd命令窗口中進入xlrd目錄執行python setup.py install命令
然後在python程序中使用import xlrd命即可導入xlrd模塊。
更多Python知識請關注Python視頻教程欄目。
㈥ 如何導入文件模塊 python
python是由一系列的模塊組成的,每個模塊就是一個py為後綴的文件,同時模塊也是一個命名空間,從而避免了變數名稱沖突的問題。模塊我們就可以理解為lib庫,如果需要使用某個模塊中的函數或對象,則要導入這個模塊才可以使用,除了系統默認的模塊(內置函數)不需要導入外。
2
在python中常用import或者from...import來導入相應的模塊。模塊一些函數和類的集合文件,並實現一定的功能,當我們需要使用這些功能的時候,可以直接把相應的模塊導入到我們的程序中,類似C語言中的include頭文件。輸入模塊的方法如下所示:
3
import:
import mode #導入mode模塊
print('=======Python import mode===============');
print ('The command line arguments are:')
for i in mode.argv:
print (i)
print ('\n The python path',mode.path)
即導入mode模塊後,使用mode.***即可使用mode模塊中的***方法,函數等。
4
from...import...:
from mode import argv,path #從mode中導入特定的成員
print('========python from import============')
print('path:',path)
即使用from mode import argv即可直接調用mode模塊中argv函數,方法等
5
簡單的說,使用第二種方法導入模塊,那麼調用模塊中的函數的時候就不需要輸入模塊名稱即可直接調用了。
具體的實例可以參見如下兩種情況:
6
另外,還有一種'from...import...as...'的導入方法。這樣調用模塊中的函數的時候,可以用自己想要的名字來替代該函數名了,如下圖中,即用'haha'來替代了'urlopen'這個函數:
7
總結:
導入mode模塊,import與from…import的不同之處在於:
如果你想要直接輸入argv變數到你的程序中而避免每次調用都輸入mode,
則可使用:from mode import arg
一般說來,應該避免使用from..import而使用import來增加程序的可讀性,也可以避免名稱的沖突。
㈦ python程序設計語言的程序可以導入別的模塊
可以。
importmodname。模塊是指一個可以交互使用,或者從另一Python程序訪問的代碼段。只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。模塊可以通過這種方法來使用其它模塊的功能。用import語句導入模塊,就在當前的名稱空間(namespace)建立了一個到該模塊的引用.這種引用必須使用全稱,也就是說,當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用funcname,而應該使用modnamefuncname。
一般情況應該使用import,但有幾個例外,1)mole文檔告訴你要用from-import的。2)導入一個包組件。需要一個包裡面的某個子模塊,一般用fromA.bimportc比importA.b.c更方便,且不會冒混淆的危險。
㈧ python 中庫怎麼導入
讓包內導入更加顯式,這個功能的一部分設計初衷是,為了幫助腳本解決同名文件出現在模塊搜索路徑上多個不同位置時的二義性。考慮包目錄,這定義了一個名為mypkg 的包,其中含有名為mypkg.main和mypkg.string 的模塊。現在,假設模塊main試圖導入名為string的模塊。在 Python 2.X和更早版本中,Python會先尋找mypkg目錄以執行相對導入。這會找到並導入位於該處的string.py文件,將其賦值給mypkg.main模塊命名空間內的名稱string。不過,這一導入的本意可能是要導入Python標准庫的string模塊。可惜的是,在這些Python版本中,無法直接忽略mypkg.string 去尋找位於模塊搜索路徑更右側的標准庫中的string模塊。此外,我們無法使用完整包導入路徑來解決這個問題,因為我們無法依賴在每台機器上的標准鏈接庫路徑。換句話說,包中的簡單導入可能具有二義性而且容易出錯。在包內,我們無法確定imports pam語句指的是包內的模塊還是包外的模塊。一種可能的後果是,一個局部的模塊或包會在不經意間隱藏了sys.path 上的另一個模塊。
在實踐中,Python使用者可以避免為他們自己的模塊重復使用標准庫模塊的名稱(如果需要標准string庫,就不要把新的模塊命名為string)。但是,一個包還是有可能意外地隱藏標准庫模塊。再者,Python 以後可能新增標准庫模塊,而其名稱可能剛好就和自己的一個模塊同名。而依賴於沒有點號開頭相對導入的程序代碼同樣也不容易理解,因為讀者可能對希望使用哪個模塊而感到困惑。所以我們最好能在代碼中顯式地指出導入的解析過程。