导入日期时间在命令行执行时会在Python脚本中引发ModuleNotFound'math'

时间:2018-06-26 23:23:05

标签: python python-3.6

我正在使用Ubuntu 17.10。在开发简单脚本时,我添加了这一行

from datetime import datetime

,并尝试使用以下命令通过命令行运行脚本:

python complete.py

但随后显示:

Traceback (most recent call last):
  File "complete.py", line 4, in <module>
    from datetime import datetime
  File "/usr/lib/python3.6/datetime.py", line 8, in <module>
    import math as _math
ModuleNotFoundError: No module named 'math'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 12, in <module>
    import subprocess, tempfile, os.path, re, pwd, grp, os, time
  File "/usr/lib/python3.6/subprocess.py", line 136, in <module>
    import _posixsubprocess
ModuleNotFoundError: No module named '_posixsubprocess'

Original exception was:
Traceback (most recent call last):
  File "complete.py", line 4, in <module>
    from datetime import datetime
  File "/usr/lib/python3.6/datetime.py", line 8, in <module>
    import math as _math
ModuleNotFoundError: No module named 'math'

如果我在PyCharm IDE中运行脚本,则没有任何错误。我已经通过运行检查了我的python版本

python -V

它显示:

Python 3.6.3 :: Anaconda, Inc.

我想念什么?

1 个答案:

答案 0 :(得分:0)

我已将操作系统更新为Ubuntu 18.04(Bionic Beaver),如果您使用的是其他版本,则以下步骤仍然有效,但仍然值得一提的是,我不再使用17.10版本中的说明原来的问题。

结果表明,即使python -V在Anaconda中显示了某些内容,python命令仍然指向某些python2.7。我发现在安装django并尝试运行python3 -m django --version以检查版本是否正确后,它显示一条消息,提示未安装django。

我所做的是:conda install -f python,以确保我拥有更新的python版本。 Anaconda文件存储在/home/<user>/anaconda/目录中。我检查了/bin目录,有一些python文件和一些指向python3.6的链接;

使用和/usr/bin命令检查ll目录,并发现:python -> python 2.6(!)。所以我的问题是,即使运行python -V,并且显示3.6.3,它实际上运行的是2.6。不确定如何。我接下来要做的事情:

sudo mv /usr/bin/python /usr/bin/python.bk

最后

sudo ln -s /home/<user>/anaconda/bin/python /usr/bin/python