无法在脚本中导入导入日期时间

jon*_*les 5 python datetime python-import

我无法从python脚本导入日期时间,但我可以从终端命令行.

1)import datetime
2)From datetime import datetime

month = datetime.datetime.now().strftime("%B")
print month
Run Code Online (Sandbox Code Playgroud)

这些代码行在逐个输入命令行时有效吗?

我在Mac上运行2.7

Mar*_*ers 18

你命名了你的脚本 datetime.py,位于/Users/ripple/Dropbox/Python/datetime.py.这是导入而不是标准库模块,因为主脚本的目录是Python查找导入的第一个位置.

您不能为脚本提供与要导入的模块相同的名称.重命名脚本.确保您还删除了字节码缓存/Users/ripple/Dropbox/Python/datetime.pyc.


Keb*_*man 5

这是正在发生的事情:

  1. datetime.py为测试命名了文件
  2. 然后您import datetime在其中编写了内容,因为这是您要尝试的模块

运行文件时,将发生以下情况:

  1. Python首先在本地目录中查找名为的模块 datetime
  2. 由于Python仅找到您的原始文件,因此它会创建一个名为的空模块文件datetime.pyc,因为它希望您以此为基础

幸运的是,StackOverflow的好人使您意识到了这个命名错误,并且您将datetime.py文件重命名为其他名称。但是令人困惑的是,您仍然会收到错误,并且挫折感会慢慢形成……

解:

  1. 始终确保文件名不等于要导入的任何Python模块
  2. 如果你还是算了,然后确保删除或重命名这两个本地.py脚本本地.pyc文件。这应该可以解决您的问题。:)

之所以如此普遍,是因为人们喜欢在编程时测试东西。而且,当他们这样做时,大多数人的自然倾向是使脚本的名称与他们要测试的名称相同。但这是大多数Python开发人员遇到的第一个陷阱。如果设计Python的好人在制作系统之前就读过Donald Norman,那将永远不是问题。但实际上,在命名文件之前,我们只需要调整Python模块系统的工作方式即可。注意:Python模块系统仍然可以通过这种方式工作,但这并不妨碍它对初学者感到困惑。

  • 呃.. 特别是,这是咬我的东西..谢谢! (2认同)