2016-08-16 58 views
1

我一直在使用python(Python 2.7.X)命令行上的mod選項一段時間,我現在切換到Python 3Python3 -m/path/to/file給我一個錯誤,而python -m/path/to/file不是

python -m path/to/file 

現在,當我嘗試做相同的程序,但與Python 3,硬是在同一行:

python3 -m path/to/file 

我給出的以下錯誤:

我一直在閱讀有關-m選項的Python 2.X和Python 3.X的文檔,我還沒有弄清楚3.X所做的小改動是如何使我的上述利用率側破!

回答

1

用途並不:

$ python -m path/to/file 

而是

$ python -m package.subpackage.module 

-m標誌增加了你的路徑上的當前目錄,否則它會查找模塊來打開該程序。例如,Python 2:

$ cat > foo.py 
import sys 
print(sys.version) 

$ python -m foo 
2.7.8 (default, Jul 28 2014, 01:34:03) 
[GCC 4.8.3] 

$ python -m /foo 
/usr/bin/python: No module named /foo 

$ python -m ~/foo 
/usr/bin/python: No module named /cygdrive/c/Users/user/foo 

$ python -m ~/foo.py 
/usr/bin/python: Import by filename is not supported. 
+0

是的,就是這樣!謝謝! – Castiel

0

Python3不會查找Python2模塊。您需要專門爲Python3安裝模塊。

舉一個具體的例子:在Debian下,python-numpy包安裝到/usr/lib/python2.7/dist-packages/numpy/,而python3-numpy包安裝到/usr/lib/python3/dist-packages/numpy/。 Python2將只搜索/usr/lib/python2.7/dist-packages/; Python3將只在/usr/lib/python3/dist-packages/中搜索。

接受它,因爲它;不要嘗試修改本地安裝的搜索路徑,以免導致可怕的混亂。而是重新安裝其Python3變體中的每個單獨模塊。