『壹』 python怎麼從別處導入模塊
肯定不能直接
import
一,最好放在統一的地方,目錄最好在python.exe的目錄下,因為python默認是搜索改目錄下的文件或者文件夾
二、盡量採用from
~~
import
~~方式,不要直接用import方式,具體原因樓主可以自己網路下原因,理解更深刻
三、當邏輯文件放的比較深的時候,需要__init__.py文件
四、如果文件不在python安裝目錄下,需要手動指定文件文件目錄,具體原因樓主可以自己網路下原因,理解更深刻
『貳』 Python中怎麼引入模塊
項目中想使用以前的代碼,或者什麼樣的需求致使你需要導入外部的包
如果是web 下,比如說django ,那麼你新建一個app,把你需要導入的說用東東,都寫到這個app中,然後在setting中的app也配上基本就ok了
如果是本地代碼,可以有幾種方式,
1、這種最簡單,也可能最不實用,將你的外部文件放到跟需要調用外部文件的文件同一個包下,同一目錄
folder
------toinvoke.py
------tobeinvoded.py
這樣在toinvoke.py 中引入
import toveinvoked 或 from tobeinvoked import *
即可
2、你的其他文件不是單個文件,或者不能如上所說放到同一目錄下,而是在不同目錄中,子目錄
folder
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這種情況,現在folder 下新建一個__init__.py 的空文件,此時的folder不再是一個普通的文件夾,而是一個包 package,現在像這樣
folder #文件夾 現在的性質為一個python包package
------__init__.py
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
3、同理,如果是如下的情況,folderB中的模塊要調用folderA中的模塊,方法同上,有什麼改變,你已經知道了
folderA
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
folderB
--------toinvoke.py
這樣在toinvoke.py 中引入
import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
4、將要被調用的代碼拷貝到$PYTHONHOME$\Lib\site-packages 下面,這個就跟Eclipse插件安裝差不多
5、在$PYTHONHOME$\Lib\site-packages 下面新建一個.pth文件,比如說是MyPackage.pth,裡面的內容是你的包的絕對路徑比如:E:/PythonPrj
那麼,在E:/PythonPrj下的所有包都可以按照包所在的相對路徑引入,這個跟Eclipse插件安裝的link 方式差不多
6、跟上面的差不多,也可以加個環境變數,這個就不多說了
總結、看看Python的包搜索路徑
Python會在以下路徑中搜索它想要尋找的模塊:
1. 程序所在的文件夾
2. 標准庫的安裝路徑
3. 操作系統環境變數PYTHONPATH所包含的路徑
將自定義庫的路徑添加到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導入模塊的「最佳實踐」是什麼
通常,不要使用from molename import *。這樣做會使導入器的命名空間變得混亂,並且使得連接器更難以檢測未定義的名稱。
在文件的頂部導入模塊。這樣做可以清楚地了解代碼所需的其他模塊,並避免了模塊名稱是否在范圍內的問題。每行導入一個模塊可以輕松添加和刪除導入的模塊,但每行導入多個模塊會佔用更少的屏幕空間。
如果按以下順序導入模塊,這是一種很好的做法:
1.標准庫模塊 -- 例如:sys,os,getopt,re
2.第三方庫模塊(安裝在Python的site-packages目錄中的任何內容) -- 例如mx.DateTime,ZODB,PIL.Image等
3.本地開發的模塊
有時需要將模塊導入語句移動到函數或類裡面,以避免循環導入問題。Gordon McMillan 說:
當兩個模塊都使用 "import <mole>" 的導入形式時,循環導入就可以了。但是當第 2 個模塊想從第 1 個模塊中獲取一個名稱 ("from mole import name") 並且導入位於頂層時,就會出錯。 這是因為第 1 個模塊中的名稱還不可用,因為第 1 個模塊正在忙著導入第 2 個模塊。
在這種情況下,如果第二個模塊僅用於一個函數,則可以輕松地將模塊導入語句移動到該函數中。調用導入時,第一個模塊將完成初始化,第二個模塊可以進行導入。
如果某些模塊是特定於平台的,則可能還需要將模塊導入語句移出頂級代碼。在這種情況下,甚至可能無法導入文件頂部的所有模塊。在這種情況下,在相應的特定於平台的代碼中導入正確的模塊是一個很好的選擇。
只有當需要解決諸如避免循環導入或試圖減少模塊初始化時間的問題時,才可以將導入移動到本地范圍,例如在函數定義中。如果根據程序的執行方式,許多導入是不必要的,這種技術尤其有用。如果僅在某個函數中使用模塊,您還可能希望將導入移到該函數中。請注意,第一次載入模塊可能會因為模塊的一次初始化而代價高昂,但多次載入模塊實際上是免費的,只需進行幾次字典查找。即使模塊名稱超出了作用域,模塊也可能在 sys.moles 中可用。
『肆』 如何導入python中的模塊
定義模塊,只要使用文本編輯器,把一些python代碼輸入到文本中,然後以.py為後綴名進行保存,任何此類文件都會被認為是python模塊。
比如說,下面的代碼輸入到一個文件中,就可以看作是一個模塊:
def
printme(var):
print
varif
__name__
==
'__main__':
printme(1)
假設說輸入到a.py中,那麼import
a就可以把這個模塊導入。
然後可執行a.printme(3),屏幕即可列印出3:
>>>
a.printme(3)3>>>
一個模塊頂層定義的變數,會自動變成模塊的屬性。例如:
data=[1,2,3]def
printme(var):
print
varif
__name__
==
'__main__':
printme(1)
data變數就是模塊的一個屬性。其實printme也是一個屬性,只不過是一個函數罷了。
引入模塊示例如下:(假定此時data=[1,2,3]未定義)
>>>
import
a>>>
a.data
Traceback
(most
recent
call
last):
File
"<pyshell#1>",
line
1,
in
<mole>
a.dataAttributeError:
'mole'
object
has
no
attribute
'data'>>>
reload(a)<mole
'a'
from
'C:/py\a.pyc'>>>>
a.data
Traceback
(most
recent
call
last):
File
"<pyshell#3>",
line
1,
in
<mole>
a.dataAttributeError:
'mole'
object
has
no
attribute
'data'>>>
從上述提示可以看出data屬性未定義,此時再在a.py文件中定義data=[1,2,3],重新載入a模塊,並輸出data屬性:
>>>
reload(a)<mole
'a'
from
'C:/py\a.py'>>>>
a.data[1,
2,
3]>>>
這里的reload函數可以重新載入一個模塊。如果在模塊代碼中更改了,那麼需要重新載入。
上面a.data,就是訪問模塊中的屬性。
上面的例子是導入一個文件作為一個模塊。
其實python的模塊導入還有更豐富的內容。
除了模塊名之外,python也可以導入指定目錄路徑。python代碼的目錄就稱為包。因此,這類導入就稱為包導入。事實上,包導入是把計算機上的目錄變成python的一個命名空間。而屬性就是目錄中包含的子目錄或者是模塊文件。
看下面例子:
在我的桌面上有一個aa文件夾,裡面有bb文件夾,bb裡面有a.py這個文件。
那麼在aa和bb文件夾中分別放置一個__init__.py,之後,在命令行中import
aa.bb.a,就可以導入模塊a了。
『伍』 python如何導入自定義模塊
1、相同目錄下,若在程序test1.py中導入模塊mod1,
則直接使用import
mod1或from
mod1
import
*;
2、主程序所在目錄是模塊所在目錄的父(或祖輩)目錄則要建立空文件__init__.py文件然後使用
from
mod2.mod2
import
*
『陸』 python commands 需要導入 哪個模塊
要獲得shell命令的輸出只需要`cmd`就可以了,
需要得到命令執行的狀態則需要判斷$?的值, 在Python中有一個模塊commands也很容易做到以上的效果.
看一下三個函數:
1). commands.getstatusoutput(cmd)
用os.popen()執行命令cmd, 然後返回兩個元素的元組(status, result). cmd執行的方式是{ cmd ; } 2>&1, 這樣返回結果裡面就會包含標准輸出和標准錯誤.
2). commands.getoutput(cmd)
只返回執行的結果, 忽略返回值.
3). commands.getstatus(file)
返回ls -ld file執行的結果.
看一下這些函數使用的例子:
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'
『柒』 python怎麼導入同一包的模塊
一、何為模塊
1.一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的後綴。
2.模塊目的和函數,對象等一樣,是為了代碼的復用性而存在的。即一個py程序寫了很多功能,也可以被其他py程序調用。被調用後被作為模塊,此時會產生一個pyc的文件即為這個模塊的緩存文件,相當於編譯了模塊文件使該py模塊被調用的速度變快。一個大的項目一個人肯定是不行的,所以模塊也為程序員相互間的合作提供了便利。
二、模塊妙用
1.import
只需要在py程序開頭加上import 文件名(不能有.py後綴)。例如,模塊的文件名是span.py,那麼只需在自己的py程序加import span。
2. import可以在程序的任意位置調用,但一次調用後會駐留內存,下次再調用會直接調用內存中的模塊(python的優化)。
3.個模塊都是一個獨立的名稱空間,定義在這個模塊中的函數,把這個模塊的名稱空間當做全局名稱空間,這樣我們在編寫自己的模塊時,就不用擔心我們定義在自己模塊中全局變數會在被導入時,與使用者的全局變數沖突。
print('from the spam.py')
money=1000def read1(): print('spam->read1->money',1000)def read2(): print('spam->read2 calling read')
read1()def change(): global money
money=0
支持tab自動補全
『捌』 Python如何引入自定義模塊
1、相同目錄下,若在程序test1.py中導入模塊mod1, 則直接使用import mod1或from mod1 import *;
2、主程序所在目錄是模塊所在目錄的父(或祖輩)目錄則要建立空文件__init__.py文件然後使用 from mod2.mod2 import *
『玖』 如何在python中添加自定義模塊
1、說明
python添加自定義第三方模塊使用pip命令。
2、步驟
以安裝requests模塊為例說明
1)打開命令行
win+r打開運行,輸入cmd點確定
如不報錯則說明安裝成功
『拾』 python 2 python 3共存 cmd pip安裝模塊,怎麼讓python3導入
想學習Python3,但是暫時又離不開Python2。在Windows上如何讓它們共存呢?
目前國內網站經常會讓大家把其中一個python.exe改個名字(嗯,我也這樣講過,在此糾正一下),這樣區分開兩個可執行文件的名字,但是這樣做有一個重大的隱患,就是修改了名字的那個python對應的pip將無法使用。
官方的解法是什麼?
事實上這個問題幾年以前Python社區就給出了官方解決方案,只不過國內一直沒有注意到罷了。
我們在安裝Python3(>=3.3)時,Python的安裝包實際上在系統中安裝了一個啟動器py.exe,默認放置在文件夾C:\Windows\下面。這個啟動器允許我們指定使用Python2還是Python3來運行代碼(當然前提是你已經成功安裝了Python2和Python3)。
如果你有一個Python文件叫 hello.py,那麼你可以這樣用Python2運行它
py -2 hello.py
類似的,如果你想用Python3運行它,就這樣
py -3 hello.py
去掉參數 -2/-3
每次運行都要加入參數-2/-3還是比較麻煩,所以py.exe這個啟動器允許你在代碼中加入說明,表明這個文件應該是由python2解釋運行,還是由python3解釋運行。說明的方法是在代碼文件的最開始加入一行
#! python2
或者
#! python3
分別表示該代碼文件使用Python2或者Python3解釋運行。這樣,運行的時候你的命令就可以簡化為
py hello.py
使用pip
當Python2和Python3同時存在於windows上時,它們對應的pip都叫pip.exe,所以不能夠直接使用 pip install 命令來安裝軟體包。而是要使用啟動器py.exe來指定pip的版本。命令如下:
py -2 -m pip install XXXX
-2 還是表示使用 Python2,-m pip 表示運行 pip 模塊,也就是運行pip命令了。如果是為Python3安裝軟體,那麼命令類似的變成
py -3 -m pip install XXXX
#! python2 和 # coding: utf-8 哪個寫在前面?
對於Python2用戶還有另外一個困惑,Python2要在代碼文件頂部增加一行說明,才能夠在代碼中使用中文。如果指明使用的Python版本也需要在文件頂部增加一行,那哪一行應該放在第一行呢?
#! python2 需要放在第一行,編碼說明可以放在第二行。所以文件開頭應該類似於:
#! python2
# coding: utf-8
有了這些技巧,Python2和Python3就可以愉快地在一起玩耍了~