python怎麼匯入自己寫的包

2021-03-09 20:45:19 字數 2055 閱讀 8472

1樓:北京刑事律師

包(packages)其實也是模組,其型別type也是module。通常引用自定義模組時有兩種方法:

1)將62616964757a686964616fe58685e5aeb931333363393130

兩個檔案放在同一目錄下。

2)在sys.path下新增要引用的py檔案的路徑。然後import。

這樣的做法,對於少數檔案是可行的,但如果程式數目很多,層級很複雜時就比較麻煩了。此時用package就能將多個py檔案組織起來,類似於第三方包一樣的引用。要方便很多。

package的層次結構與程式所在目錄的層次結構相同,且必須包含一個__init__.py的檔案。__init__.

py可以為空,只要它存在就表明此目錄被作為一個package處理。

package1/

__init__.py

subpack1/

__init__.py

module_11.py

module_12.py

module_13.py

subpack2/

__init__.py

module_21.py

module_22.py

……__init__.py可以為空,只要它存在,就表明此目錄應被作為一個package處理。當然,__init__.py中也可以設定相應的內容。

好了,現在我們在module_11.py中定義一個函式:

def funa():

print "funca in module_11"

return

一.引用模組

在頂層目錄(也就是package1所在的目錄,當然也參考上面的介紹,將package1放在直譯器能夠搜尋到的地方)執行python:

>>>from package1.subpack1.module_11 import funca

>>>funca()

funca in module_11

這樣,我們就按照package的層次關係,正確呼叫了module_11中的函式。

二.使用萬用字元*,匯入某個module中的所有元素

答案就在__init__.py中。我們在subpack1的__init__.py檔案中寫

__all__ = ['module_13', 'module_12']

然後進入python

>>>from package1.subpack1 import *

>>>module_11.funca()

traceback (most recent call last):

file "", line 1, in

importerror: no module named module_11

也就是說,以*匯入時,package內的module是受__init__.py限制的。

三.在package內部互相呼叫。

1.如果希望呼叫同一個package中的module,則直接import即可。也就是說,在module_12.py中,可以直接使用

import module_11

2.如果不在同一個package中,例如我們希望在module_21.py中呼叫module_11.py中的funca,則應該這樣:

from module_11包名.module_11 import funca

四.python如何找到我們定義的module?

在標準包sys中path屬性記錄了python的包路徑。

import sys

print(sys.path)

通常我們可以將module的包路徑放到環境變數pythonpath中,該環境變數會自動新增到sys.path屬性.

另一種方便的方法是程式設計中直接指定我們的module路徑到sys.path 中。

常用的話也可以放在python27\lib\site-packages資料夾下。

2樓:盜墓者

自己寫的模組,要放在需要匯入檔案同一個目錄或者放在lib或者script目錄(預設的模組目錄)

然後,import 名字 就行。主要不要帶字尾,帶檔名就行

spark submit的時候怎麼匯入自己寫的依賴模組

前面已經有篇文章介紹如何編譯包含hive的spark assembly.jar了,不清楚的可以翻看一下前面的文章。cloudera manager裝好的spark,直接執行spark shell進入命令列後,寫入如下語句 val hivecontext new org.apache.spark.sq...

python for語句怎麼寫,python 如何用for迴圈 寫一個三角形?

用python的for迴圈實現等差序列相加,例如 1 2 3 4 5 20 這樣的演算法,如下 for i in range 10 print i python 如何用for迴圈 寫一個三角形?如下 for i in range 1,6 print 2 i 1 python for 迴圈語句流程圖 ...

python 3 2的乘法怎麼寫

我猜測,樓源主遇到的bai問題是 a raw input input a integer number input a integer number 32 print 4 a 32323232 這不du 是乘法的問題zhi 如果是這dao樣的問題,請這樣 a int raw input input ...