国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(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í)價值,需要的朋友可以參考下

python -m xxx.py

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

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

自問自答:

python xxx.py
python -m xxx.py

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

1叫做直接運行

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

不同的加載py文件的方式,主要是影響——sys.path 這個屬性。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解釋器運行的環(huán)境,python解釋器會在這些目錄下去尋找依賴的庫!
注解一點:‘'——為當(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)
 
 
# 直接啟動: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',
 ...]
# 以模塊方式啟動: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é)會發(fā)現(xiàn),區(qū)別就是在第一行。

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

模塊啟動是把你輸入命令的目錄(也就是當(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)

如何才能啟動run.py文件?

?
1
2
3
4
5
6
7
8
9
10
11
12
# 直接啟動(失敗)
? 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
 
# 以模塊方式啟動(成功)
? 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)需要啟動的py文件引用了一個模塊。你需要注意:在啟動的時候需要考慮sys.path中有沒有你import的模塊的路徑!
這個時候,到底是使用直接啟動,還是以模塊的啟動?目的就是把import的那個模塊的路徑放到sys.path中。你是不是明白了呢?

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

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

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产毛片视频 | 国产黄色av | 欧美a网站| 亚洲欧美在线人成swag | 亚洲成av人片在线观看无码 | 久久久久久久国产精品 | 国产亚洲精品美女久久久久久久久久 | 久久在线 | 一区二区三区久久 | 欧美视频二区 | 在线a电影 | 亚洲综合在线视频 | 亚洲一区二区精品在线观看 | 午夜激情视频在线观看 | 国产精品一区久久久久 | 亚洲生活片 | 亚洲天堂一区二区 | 欧美日韩精品 | 新91在线 | 91视频免费网站 | 国产成人精品一区二区三区四区 | 777色狠狠一区二区三区 | 色综久久 | 午夜精品久久久久 | 久久久婷婷一区二区三区不卡 | 亚洲免费观看 | 中文字幕第一页在线 | 成人国产电影 | 国内精品久久久久久久影视简单 | 欧美中文字幕一区二区三区亚洲 | 亚洲成人福利 | 国产成人免费高清激情视频 | 高清视频一区 | 亚洲精品在线免费看 | 亚洲精品999| 荷兰欧美一级毛片 | 久久综合九色综合网站 | 亚洲黄色免费 | 亚洲国产精品一区二区第一页 | 久久精品一区二区 | 久久久成人精品 |