python - 当通过命令行执行时,导入日期时间会在 Python 脚本中引发 ModuleNotFound 'math'

标签 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.

我错过了什么?

最佳答案

我已经将我的操作系统更新到 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 dir 并且有一些 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

关于python - 当通过命令行执行时,导入日期时间会在 Python 脚本中引发 ModuleNotFound 'math',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51052604/

相关文章:

python - Django:如何查找哪个用户在某个 'sub'/论坛上发帖最多?

python - 通过考虑时区来比较时间

opencv - 使用 OpenCV 设置破坏网络摄像头后如何将其恢复为默认设置?

python - f 字符串不支持行连接吗?

python - 在 OpenCV 中,有些方法只存在于 c++ 中,如何在 python 中做同样的事情?

python - 如何让Python相信int类型实际上是hex类型?

python - 在元类中覆盖 __bases__

python-3.6 - 如何运行一项 Airflow 任务及其所有依赖项?

python - 稍后如何在Python中运行异步任务?

azure - 如何设置导入以便在不安装 python 应用程序的情况下运行它,并且仍然能够使用诗歌运行 tox?