最近身边的人或多或少都知道一点python,自己也想动手试试吧。按照网上的教程,安装了python,Eclipse插件pydev。接下来就是在Eclipse下新建工程,创建py文件这就不多说了。

第一个文件写点什么东西呢?helloworld还是算了,有点高级些的东西吗,听说python代码比较简洁。想了想还是请求url, 用过 java的朋友都知道相对比较繁琐,创建URL、HttpURLConnection对象,设置请求方式等。

自己也不懂python的语法,不知道如何下手,还是从网上直接copy一段吧

import urllib2

response = urllib2.urlopen('http://www.baidu.com')
html = response.read()
print (html)

好简单啊,当保存时编译器提示:Undefined variable from import: urlopen。将代码直接copy到cmd窗口下执行没有任何问题,排除了python版本或代码自身的问题,难道pydev插件有问题?urllib2应该找到了,怎么就没有urlopen呢?

在Python的安装目录下找到/Lib/urlib2.py发现是有urlopen定义的,那就很奇怪了。难道还有别的urllib2????这时候恍然大悟,原来在IDE下我把文件名称保存为了,urllib2.py。这就导致import引用的是当前文件,而当前文件里是没有定义urlopen方法的。

知道了错的地方就改掉自己定义的文件名称吧,改成了urllib2Test.py这下应该没问题了吧。果然编译器没有报错。心里暗自高兴

当在IDE环境下执行时,依然提示:AttributeError: 'module' object has no attribute 'urlopen',编译通过了,为什么执行会有问题呢?难道是执行先前编译的文件?到Python的安装目录下找到/Lib/urlib2.pyc将其删除重新编译执行,依然还是错误。

这下纳闷了,在仔细看一下错误信息:

怎么会有D:\Source\Workspace\spider\urllib2.py这个路径,安装python的目录不在这里,刚刚已经重名了这个文件的,理论应该不在存在这个文件了。

打开对应的目录,确实不存在D:\Source\Workspace\spider\urllib2.py,但却存在编译的字节码文件D:\Source\Workspace\spider\urllib2.pyc。看来执行的时候不是执行的安装包下的编译文件,而是执行重命名之前的编译字节码文件。

果断将这个原来编译产生的文件删除,重新在IDE环境下执行。成功了!!

总结

1.python引用规则不熟悉,导致引用冲突:import当前文件所在目录优先级高于安装目录。

2.可能是pydev插件的问题,当前文件有编译后的引用文件。当文件不存在了,不会再进行编译,而执行的时候依然执行了用到引用的文件首先在当前目录下查找引用的编译文件,如果有就直接使用导致错误

Python入门——import的更多相关文章

  1. Python入门-import导入模块功能

    1.啥是模块 模块(module):用来实现或者多个功能的Python代码,(包含变量.函数.类),本质就是*.py后缀文件. 包(package):定义了一个由模块和子包组成的Python应用程序执 ...

  2. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  3. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  4. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  5. Python学习【第二篇】Python入门

    Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

  6. 老鸟的Python入门教程

    转自老鸟的Python入门教程 重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,S ...

  7. Python自动化运维之1、Python入门

    Python简介 python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白.大家都知道,当下全栈工程师的概念很火 ...

  8. Python入门-函数的使用到程序的公布安装

    Python入门-函数的使用到Python的公布安装 本文主要适合有一定编程经验,至少掌握一门编程语言的人查看. 文中样例大多都是简单到认识英文单词就能看懂的水平,主要讲的是Python的总体使用方法 ...

  9. python 入门快速学习整理

    Python 入门学习 1  : 对象类型 1 1.1 列表 1 1.2 字典 2 1.3 元组 2 1.4 元组 2 1.4 文件 3 2  : 条件和循环语句 3 2.1  if else语句 3 ...

随机推荐

  1. NSArray中的对象进行排序

    看在iOS中有哪些方法可以对NSArray中的对象进行排序.下面是目录: 小引 使用NSComparator进行排序 使用NSDescriptor进行排序 使用selector进行排序 小引 我们将要 ...

  2. Android中的“再按一次返回键退出程序”实现 (转) 按返回键退出程序时进行提醒

    原文地址: https://blog.csdn.net/xichenguan/article/details/47030303 最近在研究   Android  编程方面的东西, 有了以下发现,  该 ...

  3. .NET中的那些受特别对待的类型(CriticalFinalizerObject)

    转自:http://www.cnblogs.com/yuyijq/archive/2009/08/09/1542435.html 股票里面有个ST股,就是Special Treatment的意思.就是 ...

  4. SQL夯实基础(九)MySQL联接查询算法

    书接上文<SQL夯实基础(八):联接运算符算法归类>. 这里先解释下EXPLAIN 结果中,第一行出现的表就是驱动表(Important!). 对驱动表可以直接排序,对非驱动表(的字段排序 ...

  5. VScode插件

    Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮.智能代码补全.自定义热键.括号匹配.代码片段. ...

  6. 从数据库导出数据到excel之List<List<Object>>导出

    说明:有时候数据处理为List<List<Object>>更方便 姊妹篇:从数据库导出数据到excel之List<Map<>>导出 兄弟篇:从数据库导出 ...

  7. python time模块 sys模块 random模块

    1,time模块 python中的内置模块 #1,显示当前时间戳 print(time.time()) #2,字符串格式化 print(time.strftime('%Y-%m-%d-%H-%M-%S ...

  8. springboot各种集成

    fastjson 两个方法 @Configuration public class WebMvcConfigurer extends WebMvcConfigurerAdapter { @Overri ...

  9. Tomcat最大连接数问题

    Tomcat的server.xml中Context元素的以下参数应该怎么配合适 <Connector port="8080" maxThreads="150&quo ...

  10. Android Java访问本地方法(JNI)

    当功能需要本地代码实现的时候,Java 代码就需要调用本地代码. 在调用本地代码时,首先要保证本地代码被加载到 Java 执行环境中并与 Java 代码连接在一起,这样 Java 代码在调用本地方法时 ...