日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python -m参数

發布時間:2023/11/28 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python -m参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python -m xxx.py

作用是:把xxx.py文件當做模塊啟動
但是我一直不明白當做模塊啟動到底有什么用。python xxx.py和python -m xxx.py有什么區別!

自問自答:

  1. python xxx.py
  2. python -m xxx.py

這是兩種加載py文件的方式:
1叫做直接運行
2把模塊當作腳本來啟動(注意:但是__name__的值為'main' )

不同的加載py文件的方式,主要是影響——sys.path 這個屬性。sys.path 就相當于liunx中的PATH。

下面來看一下sys.path

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

上面的內容我只截取了一段。此為當前python解釋器運行的環境,python解釋器會在這些目錄下去尋找依賴的庫!
注解一點:‘’——為當前目錄


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

# run.py 內容如下
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',

*** 細心的同學會發現,區別就是在第一行。
直接啟動是把run.py文件,所在的目錄放到了sys.path屬性中。
模塊啟動是把你輸入命令的目錄(也就是當前路徑),放到了sys.path屬性中***


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

# 目錄結構如下
package/
	__init__.pymod1.py
package2/__init__.pyrun.py  
# run.py 內容如下
import sys
from package import mod1
print(sys.path)

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

# 直接啟動(失敗)
?  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’,
…]

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

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

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

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

至此結束:
小弟語言表達能力有限,如有錯誤,還望指正。如有困惑,望多看幾遍,動手改一改demo。

總結

以上是生活随笔為你收集整理的python -m参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。