当前位置: 首页 > 面试题库 >

为什么这在Python IDLE shell中有效,但在命令提示符下作为Python脚本运行时却无效?

越心水
2023-03-14
问题内容

这在Python 3.3.2 Shell中有效

>>> import datetime
>>> print(datetime.datetime.utcnow())
2013-07-09 19:40:32.532341

那很棒!然后,我编写了一个简单的文本文件,名为“ datetime.py”

内部Datetime.py

#Date time
import datetime
print(datetime.datetime.utcnow())
#Prints GMT, which is named Universal Coordinated Time
# Which is UTC because in French it's something like
# Universahl Tyme Coordinatay
#Outputs something like 2013-07-09 15:15:19.695531

证明文件存在

C:\Python33\myscripts>ls
__pycache__  ex1.out  ex2.out  ex3.py    helloworld.py              read1.py
datetime.py  ex1.py   ex2.py   first.py  pythonintoimportexport.py  test.py

这就是它变得神秘的地方!

C:\Python33\myscripts>python datetime.py
Traceback (most recent call last):
  File "datetime.py", line 2, in <module>
    import datetime
  File "C:\Python33\myscripts\datetime.py", line 3, in <module>
    print(datetime.datetime.utcnow())
AttributeError: 'module' object has no attribute 'utcnow'

为什么相同的代码在Python Shell中可以工作,而在作为脚本运行时却不能工作?


问题答案:

问题在于文件是递归地导入自身,而不是导入内置模块datetime

演示:

$ cat datetime.py
import datetime
print datetime.__file__
$ python datetime.py
/home/monty/py/datetime.pyc
/home/monty/py/datetime.pyc

发生这种情况是因为按以下顺序搜索模块:

  • 包含输入脚本的目录(或当前目录)。
  • PYTHONPATH(目录名称列表,语法与shell变量PATH相同)。
  • 取决于安装的默认值。

只需将名称更改为其他名称datetime.py即可。



 类似资料:
  • 问题内容: 只要我通过Linux终端(bash shell)使用它,我的anaconda(4.5.4)都可以正常工作。但是,在bash脚本中运行conda命令根本不起作用。 脚本test.sh包含以下几行: 现在,运行会导致错误 如推荐给anaconda版本> 4.4,我的.bashrc不包含 但 谢谢。 问题答案: 由于@darthbith的评论,我解决了这个问题。 由于是bash函数,并且ba

  • 我最近在Windows 10机器上下载了截至2020年3月的python(3.8),并检查了我的Pip版本。我使用了pip(版本)和其他几个命令,但它说“pip不能被识别为内部或外部命令、可操作的程序或批处理文件。”我去了Windows中的简单搜索栏,找到了安装在我电脑上的pip。那么我需要使用什么命令来使用pip呢?还是我还遗漏了什么?

  • 问题内容: 在以前的计算机上,当我尝试在Windows命令提示符下退出Python脚本时,只需按+即可。 但是,当我在计算机上执行此操作时,它会告诉我“ KeyboardInterrupt”: 那么如何解决此问题,以便退出Python脚本? 谢谢。 编辑 : +的作品,但我需要输入它作为代码。希望有一种快速简单的方法来退出脚本,但是很好。 问题答案: 实际上,它取决于操作系统,也可能取决于您使用的

  • 问题内容: 我有一个文件,其中我必须替换所有单词,如$ xyz,对于它们,我必须替换为以下内容: 这个文件也有一些像$ {abcd}这样的词,我不必更改。我正在使用此命令 sed -i’s?\ $([A-Z _] +)?\ $ {\ 1}?g’文件 它可以在命令行上正常工作,但不能在perl脚本中作为 ; 我想念什么?我认为添加一些反斜杠会有所帮助。我尝试添加一些但没有成功。 谢谢 问题答案: 在

  • 问题内容: 我在命令行中键入,但是命令提示符说python不被识别为内部或外部命令,可操作程序或批处理文件。我该怎么办? 注意:我已经在计算机上安装了Python 2.7和Python 3.2。 问题答案: 终于成功了!!! 我需要做一些事情才能使其正常工作 将C:\ Python27 \添加到PATH系统变量的末尾 将C:\ Python27 \添加到PYTHONPATH系统变量的末尾 我必须将

  • 我在命令行中键入,但命令提示符显示python不能被识别为内部或外部命令、可操作程序或批处理文件。我该怎么办? 注意:我已经在我的计算机上安装了Python2.7和Python3.2。