激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python -m參數(shù)原理及使用方法解析

Python -m參數(shù)原理及使用方法解析

2020-08-21 10:14削微寒 Python

這篇文章主要介紹了Python -m參數(shù)原理及使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

python -m xxx.py

作用是:把xxx.py文件當(dāng)做模塊啟動(dòng)

但是我一直不明白當(dāng)做模塊啟動(dòng)到底有什么用。python xxx.py和python -m xxx.py有什么區(qū)別!

自問自答:

python xxx.py
python -m xxx.py

這是兩種加載py文件的方式:

1叫做直接運(yùn)行

2把模塊當(dāng)作腳本來啟動(dòng)(注意:但是__name__的值為'main' )

不同的加載py文件的方式,主要是影響——sys.path 這個(gè)屬性。sys.path 就相當(dāng)于liunx中的PATH。
下面來看一下sys.path

?
1
2
3
4
>>> import sys
>>> sys.path
['', '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
...]

上面的內(nèi)容我只截取了一段。此為當(dāng)前python解釋器運(yùn)行的環(huán)境,python解釋器會(huì)在這些目錄下去尋找依賴的庫!
注解一點(diǎn):‘'——為當(dāng)前目錄

下面有兩個(gè)例子,通過不同方式啟動(dòng)同一文件,sys.path屬性的值有何不同。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# run.py 內(nèi)容如下
import sys
print(sys.path)
 
 
# 直接啟動(dòng):python run.py
test_import_project git:(master) ? python run.py
['/Users/sx/Documents/note/test_py/test_import_project',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
 ...]
# 以模塊方式啟動(dòng):python -m run.py
test_import_project git:(master) ? python -m run.py
['',
 '/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',

*** 細(xì)心的同學(xué)會(huì)發(fā)現(xiàn),區(qū)別就是在第一行。

直接啟動(dòng)是把run.py文件,所在的目錄放到了sys.path屬性中。

模塊啟動(dòng)是把你輸入命令的目錄(也就是當(dāng)前路徑),放到了sys.path屬性中***

在工作場景中有什么用呢?

?
1
2
3
4
5
6
7
# 目錄結(jié)構(gòu)如下
package/
    __init__.py
    mod1.py
package2/
    __init__.py
    run.py
?
1
2
3
4
# run.py 內(nèi)容如下
import sys
from package import mod1
print(sys.path)

如何才能啟動(dòng)run.py文件?

?
1
2
3
4
5
6
7
8
9
10
11
12
# 直接啟動(dòng)(失敗)
? test_import_project git:(master) ? python package2/run.py
Traceback (most recent call last):
 File "package2/run.py", line 2, in <module>
  from package import mod1
ImportError: No module named package
 
# 以模塊方式啟動(dòng)(成功)
? test_import_project git:(master) ? python -m package2.run
['',
'/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
...]

當(dāng)需要啟動(dòng)的py文件引用了一個(gè)模塊。你需要注意:在啟動(dòng)的時(shí)候需要考慮sys.path中有沒有你import的模塊的路徑!
這個(gè)時(shí)候,到底是使用直接啟動(dòng),還是以模塊的啟動(dòng)?目的就是把import的那個(gè)模塊的路徑放到sys.path中。你是不是明白了呢?

官方文檔參考:  http://www.pythondoc.com/pythontutorial3/modules.html

導(dǎo)入一個(gè)叫 mod1 的模塊時(shí),解釋器先在當(dāng)前目錄中搜索名為 mod1.py 的文件。如果沒有找到的話,接著會(huì)到 sys.path 變量中給出的目錄列表中查找。 sys.path 變量的初始值來自如下:

  • 輸入腳本的目錄(當(dāng)前目錄)。
  • 環(huán)境變量 PYTHONPATH 表示的目錄列表中搜索(這和 shell 變量 PATH 具有一樣的語法,即一系列目錄名的列表)。
  • Python 默認(rèn)安裝路徑中搜索。
  • 實(shí)際上,解釋器由 sys.path 變量指定的路徑目錄搜索模塊,該變量初始化時(shí)默認(rèn)包含了輸入腳本(或者當(dāng)前目錄), PYTHONPATH 和安裝目錄。這樣就允許 Python程序了解如何修改或替換模塊搜索目錄。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/xueweihan/p/5118222.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久精品人人做人人爽 | 色综合欧美 | 久久久裸体视频 | 欧美一区二区三区久久精品视 | v11av在线视频成人 | 久久探花| 国产精品美女久久久久久网站 | 激情黄页 | 黄污免费网站 | 国产精品99久久久久久宅女 | 国产精品三级a三级三级午夜 | 精品久久久久久综合日本 | 国产在线a | 一级做人爱c黑人影片 | 国产女同疯狂激烈互摸 | 国产一区免费在线 | 日本a∨精品中文字幕在线 国产精品片www48888 | 免费激情视频网站 | 国产日本在线播放 | 久久精品观看 | 精品69人人人人 | 精品国产乱码久久久久久久 | 黄视频免费观看 | 亚洲欧美日韩精品久久 | 2021国产精品视频 | h视频在线观看免费 | 成人在线不卡 | 国产精品一区二区三区在线 | xfplay噜噜av| 欧美精品久久久久久久久久 | 精品国产一区二区三区在线观看 | 天使萌一区二区三区免费观看 | www.9191.com| 毛片在线免费观看完整版 | 国产视频软件在线 | www国产成人免费观看视频 | 久久久一区二区 | 91久久夜色精品国产网站 | www.热| 国产视频在线观看免费 | 亚洲国产精品久久久久久久久 |