1

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

python -m path/to/file

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

python3 -m path/to/file

我收到以下错误:

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

我一直在阅读有关 -m 选项的 Python 2.X 和 Python 3.X 的文档,但我还没有弄清楚对 3.X 所做的小改动是如何使我这边的上述利用率被破坏的!

4

2 回答 2

2

用法不是:

$ 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.
于 2016-08-16T16:13:10.037 回答
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 变体中重新安装每个模块。

于 2016-08-16T15:57:14.593 回答