1. 程式人生 > >python3 -m pip install django, -m引數

python3 -m pip install django, -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
相當於import,叫做當做模組來啟動

不同的載入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__.py
    mod1.py
package2/
    __init__.py
    run.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.cnblogs.com/softidea/p/5119923.html

相關推薦

python3 -m pip install django -m引數

python -m xxx.py作用是:把xxx.py檔案當做模組啟動但是我一直不明白當做模組啟動到底有什麼用。python xxx.py和python -m xxx.py有什麼區別!自問自答:python xxx.pypython -m xxx.py這是兩種載入py檔案的方

python3 -m pip install --upgrade pip

在一個系統中共存Python2、python3的時候,pip、pip2、pip3使用的時候會報錯: c:\Python35\Scripts>pip3 Fatal error in launcher: Unable to create process using '"' 解決方法:

$ sudo python -m pip install pylint 出錯解決方法

studio span lang 問題 pan 方法 pretty sudo pytho 問題:在unbuntu執行$ sudo python -m pip install pylint出錯解決方法支行以下命令sudo pip install pylint==1.9.3這

You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip

pip提示: You are using pip version 10.0.1, however version 18.1 is available.You should consider upgrading via the 'python -m pip install --upgrade pip' c

25- 解決'python -m pip install --upgrade pip' 報錯問題

轉載於:https://blog.csdn.net/cxs123678/article/details/80659273   再安裝包的時候提示 You are using pip version 9.0.3, however version 10.0.1 is available.You s

Pycharm 中You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgra

今天執行程式的時候出現了: You are using pip version 10.0.1, however version 18.1 is available.You should consider upgrading via the 'python -m pip install --upgrade p

解決python -m pip install --upgrade pip 升級不成功問題

args bytes catcher pre catch cep none -- recv 1、使用命令出現、 You are using pip version 9.0.1, however version 19.1.1 is available. You sho

解決You should consider upgrading via the 'python -m pip install --upgrade pip' command. (pip工具版本較低導致)

步驟1:  找到pip- 版本號 dist-info 資料夾   操作: 在python的安裝目錄下的Lib檔案下的site-packages資料夾下找到 ip- 版本號 dist-info 資料夾       例如: C:\Python37\Lib\site-packages\

Win10上Python3通過pip install Twisted安裝時出現UnicodeDecodeError

occurred stat color utf-8 bsp exception col hand ole pip install Twisted 報錯: C:\Windows\system32>pip install Twisted Collecting T

Ubuntu下python3 安裝 pipDjango

Ubuntu系統內建python2.7,如果你安裝pip使用 sudo apt-get install python-pip 那麼,你僅僅是在內建的python2.7裡面安裝了pip,你下載的python3 在呼叫pip的時候會提醒你can't open file 'pip

window python3 安裝pip和scrapylxml 過程和出錯解決

如果需要轉載請私信,並說明出處連結,謝謝合作 自己爬過的坑。。。。。 我的環境:win7 python :3.5 一.先在cmd下 進入Python的安裝目錄。 例:C:\Users\asus>cd /d D:\Python\Python

D. Powerful array 離線+莫隊算法 給定n個數m次查詢;每次查詢[l,r]的權值; 權值計算方法:區間某個數x的個數cnt那麽貢獻為cnt*cnt*x; 所有貢獻和即為該區間的值;

code ++ 計算方法 equal ati contains tdi ces sum D. Powerful array time limit per test 5 seconds memory limit per test 256 megabytes input st

行車記錄儀穩定方案:TC358778XBG:RGB轉MIPI DSI芯片M-Star標配IC

TC358778XBG RGB轉MIPI SSD2828 MIPI轉換IC TTL轉MIPI DSI 原廠:Toshiba型號:TC358778XBG功能:TC358778XBG是一顆將RGB信號轉換成MIPI DSI的芯片,最高分辨率支持到1920x1200,其應用圖如下:產品特征:MI

python3開發進階-Django框架中的ORM的常用操作的補充(F查詢和Q查詢事務)

這樣的 env atomic 實例 In git 必須 TE setup 閱讀目錄 F查詢和Q查詢 事務 一、F查詢和Q查詢 1、F查詢 查詢前的準備 class Product(models.Model): name = mod

關於直線V形線Z形線M形線分割平面的總結

沒有 分享圖片 得到 增加 分享 去掉 http n+1 如果 一:N條直線分割平面 假設,x條線能將平面分為f(x)份,這對於份f(n) 第n條線,和其他n-1條線都有交點時,增加量最大,為n; 則: f(n)=f(n-1)+n; 有f(0)=1;得到:n 條直

編寫一個函數在頁面上輸出一個N行M列的表格表格內容填充1~100的隨機數字

order 編寫 表格 func 隨機 函數 var 隨機數 for 編寫一個函數,在頁面上輸出一個N行M列的表格,表格內容填充1~100的隨機數字 function tab(n,m){ document.write("<table border=1>"); f

【Test1】M=11+22+33+...+NN;寫出15以內的NM對應的數值

str std 分享圖片 clu pac ace bsp end name 【Test1】M=11+22+33+...+NN;寫出15以內的N,M對應的數值 #include "pch.h" #include <iostream> using namespa

關於python使用pip install 安裝包Geany無法找到包的問題

我在使用百度語音合成的過程中遇到這種情況,這是由於更新了python,或者pip,路徑發生了改變造成的。  然而我已經安裝了baidu-aip 我們在Geany中檢視一下路徑 輸入   import sys print(sys.path) 可

bootstrap響應式;輪播圖pc端m

 隨著3G的普及,越來越多的人使用手機上網。移動裝置正超過桌面裝置,成為訪問網際網路的最常見終端。於是,網頁設計師不得不面對一個難題:如何才能在不同大小的裝置上呈現同樣的網頁?本篇文章將講述自適應網頁設計的概念和方法,使網頁開發人員維護同一個網頁程式碼,即可使網站在多種裝置上具有更好的閱讀體驗。本文

pycharm18.2.4 + Python3.7.1 安裝salt報錯python pip install salt: Command "python setup.py egg_info" failed with error code 10 及解決方法

最近在使用Python3.7.1 + pycharm + salt編寫程式中需要用到salt模組,但是在pycharm中使用pip install salt 安裝時出現錯誤:   1、提示需要 microsoft visual c++ 14.0     解決方法:可以去官網http://land