Python3 -m /path/to/file 给我一个错误,而 python -m /path/to/file 不是

Python3 -m /path/to/file is giving me an error, whereas python -m /path/to/file is not

我在命令行上使用 mod 选项和 python (Python 2.7.X) 有一段时间了,现在我要切换到Python 3.

python -m path/to/file

现在,当我尝试执行相同的过程时,但使用 Python 3,实际上是同一行:

python3 -m path/to/file

我收到以下错误:

/usr/bin/python3: No module named path/to/file

我一直在阅读 Python 2.X 和 Python 3.X 关于 -m 选项的文档,但我还没有弄清楚这个小对 3.X 所做的更改已使我这边的上述使用中断!

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 变体中重新安装每个模块。

用法不是:

$ python -m path/to/file

而是

$ python -m package.subpackage.module

-m 标志将当前目录添加到您的 Python 路径,然后它会在 Python 路径上查找用于打开程序的模块。例如:

$ 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.