最近身边的人或多或少都知道一点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. XCOde 5 的界面布局一些新特性

    1.问题 •在iOS程序中,大部分视图控制器都包含了大量的代码用于设置UI布局,设置控件的水平或垂直位置,以确保组件在不同版本的iOS中都能得到合理的布局 •甚至有些程序员希望在不同的设备使用相同的视 ...

  2. BZOJ1407 NOI2002 Savage 【Exgcd】

    BZOJ1407 NOI2002 Savage Description Input 第1行为一个整数N(1<=N<=15),即野人的数目. 第2行到第N+1每行为三个整数Ci, Pi, L ...

  3. Sharepoint Web.config trust level="Full"权限说明

    在SharePoint里面,不仅有用户的权限,还有代码的权限.比如,我们在安装一个自定义的WebPart的时候,默认的情况下是不能操纵文件夹的,如果你看一些教你怎么做WebPart的文章的话,你会发现 ...

  4. hadoop 的job.setOutputKeyClass和job.setOutputValueClass的几个问题

    昨天写了一个mapreduce函数一直有错误,找不到错误,今天找了一天终于解决了,原来是hadoop 的job.setOutputKeyClass和job.setOutputValueClas设置输出 ...

  5. MySQL5.7中使用JSON

    一.创建表 CREATE TABLE `user` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `info` json DEFAULT NULL, #注意desc ...

  6. 重温CLR(十二) 委托

    回调函数是一种非常有用的编程机制,它的存在已经有很多年了..NET通过委托来提供回调函数机制.不同于其他平台(比如非托管C++)的回调机制,委托的功能要多得多.例如,委托确保回调方法是类型安全的(这是 ...

  7. ballerina 学习十四 values && types

    ballerina 包含的数据类型有string int map array record boolean ojbect function table tuple any 简单说明 数据类型和其他语言 ...

  8. sysbench 1.0.9 mysql 压测工具安装使用

    备注:    安装比较简单,可以使用源码或者使用yum 进行安装,本次测试使用yum    注意1.0 之后版本与老版本改动比较大,好多地方都有修改,本次测试使用    的mysql 使用docker ...

  9. Nchan 实时消息ha 配置

    备注:      Nchan 的数据持久化,以及ha 都是通过redis实现的,如果要做到无单点可以使用redis cluster     同对于Nchan server 进行多副本   1. 安装 ...

  10. Docker生态不会重蹈Hadoop的覆辙

    本文原作者是晏东(精灵云Ghostcould创始人),在读到<Docker生态会重蹈Hadoop的覆辙吗?>文章后的个人思考,里面的不少观点也是很不错的. 1.形态上的差异 2013年的时 ...