怎样导入其他地方的python如何导入模块模块

用户名:李振良OK
文章数:175
评论数:372
访问量:489368
注册日期:
阅读量:1297
阅读量:3317
阅读量:580915
阅读量:464582
51CTO推荐博文
9.1 自定义模块自定义模块你已经会了,平常写的代码放到一个文件里面就是啦!例如,写个简单的函数,作为一个模块:#!/usr/bin/python
#&-*-&coding:&utf-8&-*-
def&func(a,&b):
&&&return&a&*&b
class&MyClass:
&&&def&__init__(self,&a,&b):
&&&&&&&&self.a&=&a
&&&&&&&&self.b&=&b
&&&def&method(self):
&&&&&&&&return&self.a&*&self.b
导入模块:
&&&&import&test
&&&&test.func(2,&2)
&&&&c&=&test.MyClass(2,&2)
&&&&c.method()
4是不是很简单!是的,没错,就是这样。需要注意的是,test就是文件名。另外,模块名要能找到,我的是在当前目录下。有时经常from...import...,这又是啥呢,来看看:&&&&from&test&import&func,&MyClass&&#&多个函数或类以逗号分隔
&&&&test.func(2,&2)
Traceback&(most&recent&call&last):
&&File&"&stdin&",&line&1,&in&&module&
NameError:&name&'test'&is&not&defined
&&&&func(2,&2)
&&&&c&=&MyClass(2,&2)
&&&&c.method()
4看到了吧!如果你不想把模块里的函数都导入,就可以这样。一方面避免导入过多用不到的函数增加负载,另一方面引用时可不加模块名。如果想调用不加模块名,也想导入所有模块,可以这样:&&&&from&test&import&*
&&&&func(2,&2)
&&&&c&=&MyClass(2,&2)
&&&&c.method()
4使用个星号就代表了所有。提醒:在模块之间引用也是同样的方式。博客地址:http://lizhenliang.QQ群:(Shell/Python运维开发群)9.2 作为脚本来运行程序所有的模块都有一个内置属性__name__,如果import一个模块,那么模块的__name__属性返回值一般是文件名。如果直接运行Python程序,__name__的值将是一个"__mian__"。举例说明,根据上面程序做一个测试:#!/usr/bin/python
#&-*-&coding:&utf-8&-*-
def&func(a,&b):
&&&return&a&*&b
class&MyClass:
&&&def&__init__(self,&a,&b):
&&&&&&&&self.a&=&a
&&&&&&&&self.b&=&b
&&&def&method(self):
&&&&&&&&return&self.a&*&self.b
print&__name__
#&python&test.py
__main__与预期一样,打印出了“__main__”,再创建一个test2.py,导入这个模块:#!/usr/bin/python
#&-*-&coding:&utf-8&-*-
import&test
#&python&test2.py
test打印出了模块名,这个结果输出就是test.py中的print __name__。所以,我们在test.py里面判断下__name__值等于__main__时说明在手动执行这个程序:#!/usr/bin/python
#&-*-&coding:&utf-8&-*-
def&func(a,&b):
&&&return&a&*&b
class&MyClass:
&&&def&__init__(self,&a,&b):
&&&&&&&&self.a&=&a
&&&&&&&&self.b&=&b
&&&def&method(self):
&&&&&&&&return&self.a&*&self.b
if&__name__&==&"__main__":
&&&print&"我在手动执行这个程序..."
#&python&test.py
我在手动执行这个程序...此时再运行test2.py试试,是不是打印为空!明白了吧!9.3 安装第三方模块在Python中安装外部的模块有几种方式:1)下载压缩包,通过setuptools工具安装,这个在第一章Python基础知识里面用到过。推荐下载地址:http://pypi.python.org2)easy_install工具安装,也依赖setuptools。3)pip工具安装。推荐使用这个方式。4)直接将压缩包解压到Python模块目录。但常常会出现import失败,不推荐。5)在Windows下,除了上面几种方式以外,可以直接下载exe文件点击一步步安装。pip与easy_install安装方式类似,主要区别在于easy_install不支持卸载软件,而pip支持。推荐使用pip命令安装,简单方便。如果安装失败可以按顺序这么尝试:方式1 --& 方式2 --& 方式4以安装setuptools举例上面几种安装方式:方式1:
#&wget&https://pypi.python.org/packages/32/3c/e853a68b703f347f5ed28ac70578/setuptools-26.1.1.tar.gz
#&tar&zxvf&setuptools-26.1.1.tar.gz
#&cd&setuptools-26.1.1
#&python&setup.py&install
#&easy_install&setuptools
#&pip&install&setuptools
#&pip&uninstall&setuptools&&#&卸载
#&pip&search&setuptools&&#&搜索
cp&-rf&setuptools-26.1.1&/usr/local/lib/python2.7/dist-packages9.4 查看模块帮助文档前面几个章节已经使用几个内置模块了,比如collections、itertools等,导入与上面一样,这里不再过多说明了。1)help()函数当一个模块对其语法不了解时,可以查看帮助,以collections举例:&&&&import&collections&&&&
&&&&help(collections)
Help&on&module&collections:
&&collections
&&/usr/lib/python2.7/collections.py
MODULE&DOCS
&&http://docs.python.org/library/collections&&#&注意:这里是这个模块的帮助文档,很详细的哦!
&&&__builtin__.dict(__builtin__.object)
&&&&&&&&Counter
&&&&&&&&OrderedDict
&&&&&&&&defaultdict
&&&__builtin__.object
&&&&&&&&_abcoll.Callable
&&&&&&&&_abcoll.Container
&&&&......使用help()就能查看这个模块的内部构造,包括类方法、属性等信息。也可以再对某个方法查看其用法:&&&&help(collections.Counter())&&&&
Help&on&Counter&in&module&collections&object:
class&Counter(__builtin__.dict)
&&&&&|&&Dict&subclass&for&counting&hashable&items.&&Sometimes&called&a&bag
&&&&&|&&or&multiset.&&Elements&are&stored&as&dictionary&keys&and&their&counts
&&&&&|&&are&stored&as&dictionary&values.
&&&&&|&&&&&&c&=&Counter('abcdeabcdabcaba')&&#&count&elements&from&a&string
&&&&&|&&&&&&c.most_common(3)&&&&&&&&&&&&&&&&#&three&most&common&elements
&&&&&|&&[('a',&5),&('b',&4),&('c',&3)]
&&&&&|&&&&&&sorted(c)&&&&&&&&&&&&&&&&&&&&&&&#&list&all&unique&elements
&&&&&|&&['a',&'b',&'c',&'d',&'e']
&&&&&|&&&&&&''.join(sorted(c.elements()))&&&#&list&elements&with&repetitions
&&&&&|&&'aaaaabbbbcccdde'
&&&&&|&&&&&&sum(c.values())&&&&&&&&&&&&&&&&&#&total&of&all&counts
&&&&&|&&15
&&&&&|&&&&&&c['a']&&&&&&&&&&&&&&&&&&&&&&&&&&#&count&of&letter&'a'
......一般里面都是举例说明,可快速帮助我们回忆使用方法。2)dir()函数查看对象属性这个在前面也用到过,能看到对象的方法、属性等信息:&&&&&&&&dir(collections)&&&&
&&&&['Callable',&'Container',&'Counter',&'Hashable',&'ItemsView',&'Iterable',&'Iterator',&'KeysView',&'Mapping',&'MappingView',&'MutableMapping',&'MutableSequence',&'MutableSet',&'OrderedDict',&'Sequence',&'Set',&'Sized',&'ValuesView',&'__all__',&'__builtins__',&'__doc__',&'__file__',&'__name__',&'__package__',&'_abcoll',&'_chain',&'_class_template',&'_eq',&'_field_template',&'_get_ident',&'_heapq',&'_imap',&'_iskeyword',&'_itemgetter',&'_repeat',&'_repr_template',&'_starmap',&'_sys',&'defaultdict',&'deque',&'namedtuple']3)github上查看模块用法Python官方模块下载地址http://pypi.python.org,所有的模块在这里都有。打开网站后,在搜索框搜索你的模块名,在结果找到模块名点进去,会有一个 Home Page的连接,Python大多数模块都是托管在github上面,这个链接就是这个模块在github上面的地址,点击后跳转到github对应的模块页面,里面也有很详细模块使用方法。9.5 导入模块新手容易出现的问题还有一个新手经常犯的问题,写一个模块,比如使用itertools模块,为了说明这个测试文件是这个模块,就把文件名写成了这个模块名,于是就造成了下面错误:#!/usr/bin/python
#&-*-&coding:&utf-8&-*-
import&collections
c&=&collections.Counter()
for&i&in&"Hello&world!":
&&&c[i]&+=&1
#&python&collections.py
Traceback&(most&recent&call&last):
&&File&"collections.py",&line&3,&in&&module&
&&&&import&collections
&&File&"/home/user/collections.py",&line&4,&in&&module&
&&&&c&=&collections.Counter()
AttributeError:&'module'&object&has&no&attribute&'Counter'抛出异常,明明在解释器里面可以正常导入使用啊,怎么会提示没Counter属性呢,问题就出现你的文件名与导入的模块名重名,导致程序import了这个文件,上面讲过文件名就是模块名。所以文件名不要与引用的模块名相同。还有一个使用方法也说明下,使用as关键字设置模块别名,这样使用中就不用输入那么长的模块名了,按照上面的例子,把名字先改成collections1.py,做测试:#!/usr/bin/python
#&-*-&coding:&utf-8&-*-
import&collections&as&cc
c&=&cc.Counter()
for&i&in&"Hello&world!":
&&&c[i]&+=&1
#&python&collections1.py
Counter({'l':&3,&'o':&2,&'!':&1,&'&':&1,&'e':&1,&'d':&1,&'H':&1,&'r':&1,&'w':&1})本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
本文收录至博客专题:《》http://blog.csdn.net/zyz/article/category/1084340
一 .module
通常模块为一个文件,直接使用import来导入就好了。可以作为module的文件类型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。
二. package
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。
&一.模块你可以使用import语句将一个源代码文件作为模块导入.例如:
a&=&37&&&&&&&&&&&&&&&&&&&&
def&foo:&&&&&&&&&&&&&&&&&&
&&&&print&"I'm&foo"&&
class&bar:&&&&&&&&&&&&&&&&
&&&&def&grok(self):&&
&&&&&&&&print&"I'm&bar.grok"&&
b&=&bar()&&&&&&&&&&&&&&&&&
使用import spam 语句就可以将这个文件作为模块导入。系统在导入模块时,要做以下三件事:
1.为源代码文件中定义的对象创建一个名字空间,通过这个名字空间可以访问到模块中定义的函数及变量。
2.在新创建的名字空间里执行源代码文件.
3.创建一个名为源代码文件的对象,该对象引用模块的名字空间,这样就可以通过这个对象访问模块中的函数及变量,如: &
import&spam&&&&&&&&&&&
print&spam.a&&&&&&&&&&
spam.foo()&&
c&=&spam.bar()&&
用逗号分割模块名称就可以同时导入多个模块:
import&socket,&os,&regex&&
模块导入时可以使用 as 关键字来改变模块的引用对象名字:
import&os&as&system&&
import&socket&as&net,&thread&as&threads&&
system.chdir("..")&&
net.gethostname()&&
使用from语句可以将模块中的对象直接导入到当前的名字空间. from语句不创建一个到模块名字空间的引用对象,而是把被导入模块的一个或多个对象直接放入当前的名字空间:
from&socket&import&gethostname&
print&gethostname()&&&&&&&&&&&&
socket.gethostname()&&&&&&&&&&&
from语句支持逗号分割的对象,也可以使用星号(*)代表模块中除下划线开头的所有对象:
from&socket&import&gethostname,&socket&&
from&socket&import&*&&&
不过,如果一个模块如果定义有列表__all__,则from module import * 语句只能导入__all__列表中存在的对象。
__all__&=&[&'bar',&'spam'&]&&&&&
另外, as 也可以和 from 联合使用:
from&socket&import&gethostname&as&hostname&&
h&=&hostname()&&
语句可以在程序的任何位置使用,你可以在程序中多次导入同一个模块,但模块中的代码*仅仅*在该模块被首次导入时执行。后面的import语句只是简单的创建一个到模块名字空间的引用而已。sys.modules字典中保存着所有被导入模块的模块名到模块对象的映射。这个字典用来决定是否需要使用import语句来导入一个模块的最新拷贝.
from module import * 语句只能用于一个模块的最顶层.*特别注意*:由于存在作用域冲突,不允许在函数中使用from 语句。
每个模块都拥有 __name__ 属性,它是一个内容为模块名字的字符串。最顶层的模块名称是 __main__
.命令行或是交互模式下程序都运行在__main__ 模块内部.
利用__name__属性,我们可以让同一个程序在不同的场合(单独执行或被导入)具有不同的行为,象下面这样做:
if&__name__&==&'__main__':&&
&&&&&&statements&&
&&&&&&statements&&&
模块搜索路径
导入模块时,解释器会搜索sys.path列表,这个列表中保存着一系列目录。一个典型的sys.path 列表的值:
['', '/usr/local/lib/python2.0',
&&&& '/usr/local/lib/python2.0/plat-sunos5',
&&&& '/usr/local/lib/python2.0/lib-tk',
&&&& '/usr/local/lib/python2.0/lib-dynload',
&&&& '/usr/local/lib/python2.0/site-packages']
['', 'C:\\WINDOWS\\system32\\python24.zip', 'C:\\Documents and
Settings\\weizhong', 'C:\\Python24\\DLLs', 'C:\\Python24\\lib',
'C:\\Python24\\lib\\plat-win', 'C:\\Python24\\lib\\lib-tk',
'C:\\Python24\\Lib\\site-packages\\pythonwin', 'C:\\Python24',
'C:\\Python24\\lib\\site-packages',
'C:\\Python24\\lib\\site-packages\\win32',
'C:\\Python24\\lib\\site-packages\\win32\\lib',
'C:\\Python24\\lib\\site-packages\\wx-2.6-msw-unicode']
空字符串 代表当前目录. 要加入新的搜索路径,只需要将这个路径加入到这个列表.
模块导入和汇编
到现在为止,本章介绍的模块都是包含Python源代码的文本文件. 不过模块不限于此,可以被 import 语句导入的模块共有以下四类:
&使用Python写的程序( .py文件)
&C或C++扩展(已编译为共享库或DLL文件)
&包(包含多个模块)
&内建模块(使用C编写并已链接到Python解释器内)
当查询模块 foo 时,解释器按照 sys.path 列表中目录顺序来查找以下文件(目录也是文件的一种):
1.定义为一个包的目录 foo
2.foo.so, foomodule.so, foomodule.sl,或 foomodule.dll (已编译扩展)
3.foo.pyo (只在使用 -O 或 -OO 选项时)
对于.py文件,当一个模块第一次被导入时,它就被汇编为字节代码,并将字节码写入一个同名的
.pyc文件.后来的导入操作会直接读取.pyc文件而不是.py文件.(除非.py文件的修改日期更新,这种情况会重新生成.pyc文件)
在解释器使用 -O 选项时,扩展名为.pyo的同名文件被使用.
pyo文件的内容虽去掉行号,断言,及其他调试信息的字节码,体积更小,运行速度更快.如果使用-OO选项代替-O,则文档字符串也会在创建.pyo文件时也被忽略.
如果在sys.path提供的所有路径均查找失败,解释器会继续在内建模块中寻找,如果再次失败,则引发 ImportError 异常.
.pyc和.pyo文件的汇编,当且仅当import 语句执行时进行.
当 import 语句搜索文件时,文件名是大小写敏感的。即使在文件系统大小写不敏感的系统上也是如此(Windows等). 这样, import foo 只会导入文件foo.py而不会是FOO.PY.
重新导入模块
如果更新了一个已经用import语句导入的模块,内建函数reload()可以重新导入并运行更新后的模块代码.它需要一个模块对象做为参数.例如:
import foo
... some code ...
reload(foo)&&&&&&&&& # 重新导入 foo
在reload()运行之后的针对模块的操作都会使用新导入代码,不过reload()并不会更新使用旧模块创建的对象,因此有可能出现新旧版本对象共存的情况。
*注意* 使用C或C++编译的模块不能通过 reload()
函数来重新导入。记住一个原则,除非是在调试和开发过程中,否则不要使用reload()函数.
多个关系密切的模块应该组织成一个包,以便于维护和使用。这项技术能有效避免名字空间冲突。创建一个名字为包名字的文件夹并在该文件夹下创建一个__init__.py
文件就定义了一个包。你可以根据需要在该文件夹下存放资源文件、已编译扩展及子包。举例来说,一个包可能有以下结构:
&&&&& __init__.py
&&&&& Primitive/
&&&&&&&& __init__.py
&&&&&&&& lines.py
&&&&&&&& fill.py
&&&&&&&& text.py
&&&&&&&& ...
&&&&& Graph2d/
&&&&&&&& __init__.py
&&&&&&&& plot2d.py
&&&&&&&& ...
&&&&& Graph3d/
&&&&&&&& __init__.py
&&&&&&&& plot3d.py
&&&&&&&& ...
&&&&& Formats/
&&&&&&&& __init__.py
&&&&&&&& gif.py
&&&&&&&& png.py
&&&&&&&& tiff.py
&&&&&&&& jpeg.py
import语句使用以下几种方式导入包中的模块:
import&Graphics.Primitive.fill&
from&Graphics.Primitive&import&fill
from&Graphics.Primitive.fill&import&floodfill&
无论一个包的哪个部分被导入,
在文件__init__.py中的代码都会运行.这个文件的内容允许为空,不过通常情况下它用来存放包的初始化代码。导入过程遇到的所有
__init__.py文件都被运行.因此 import Graphics.Primitive.fill 语句会顺序运行 Graphics 和
Primitive 文件夹下的__init__.py文件.
下边这个语句具有歧义:
from&Graphics.Primitive&import&*&&&
这个语句的原意图是想将Graphics.Primitive包下的所有模块导入到当前的名称空间.然而,由于不同平台间文件名规则不同(比如大小写敏感问题),
Python不能正确判定哪些模块要被导入.这个语句只会顺序运行 Graphics 和 Primitive
文件夹下的__init__.py文件.
要解决这个问题,应该在Primitive文件夹下面的__init__.py中定义一个名字all的列表,例如:
__all__&=&["lines","text","fill",...]&&
这样,上边的语句就可以导入列表中所有模块.
下面这个语句只会执行Graphics目录下的__init__.py文件,而不会导入任何模块:
import&Graphics&&
Graphics.Primitive.fill.floodfill(img,x,y,color)&&
不过既然 import Graphics 语句会运行 Graphics 目录下的 __init__..py文件,我们就可以采取下面的手段来解决这个问题:
import&Primitive,&Graph2d,&Graph3d&&
import&lines,&fill,&text,&...&&
这样import Graphics语句就可以导入所有的子模块(只能用全名来访问这些模块的属性).
sys.path 和sys.modules
sys.path包含了module的查找路径;
sys.modules包含了当前所load的所有的modules的dict(其中包含了builtin的modules);
阅读(...) 评论()问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
这个模块可能是系统的任何一个目录,或者是远程目录,有没有可能实现?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
sys.path是python的搜索模块的路径集,是一个list。可以在python 环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失了!使用下面方法将路径永久添加到sys.path:方法一:使用pth文件,在 /Lib/site-packages文件中创建.pth文件,将模块的路径写进去,一行一个路径,方法二:使用PYTHONPATH环境变量,在这个环境变量中输入相关的路径,不同的路径之间用逗号(英文的)分开,如果PYTHONPATH 变量还不存在,可以创建它!远程目录通过分布式文件系统挂载后,找出路径用上述方法即可。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1. 可以。把那个目录加入到PYTHONPATH环境变量,或者在python代码中加入到sys.path中,然后再import。
2. 可以通过NFS/SMB/fuse-sshfs挂载到本地以后,使用上述方法import。
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:第九章 Python自定义模块及导入方法
9.1 自定义模块
自定义模块你已经会了,平常写的代码放到一个文件里面就是啦!
例如,写个简单的函数,作为一个模块:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(a, b):
return a * b
class MyClass:
def __init__(self, a, b):
9.1 自定义模块
自定义模块你已经会了,平常写的代码放到一个文件里面就是啦!
例如,写个简单的函数,作为一个模块:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(a, b):
return a * b
class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b
def method(self):
return self.a * self.b
导入模块:
&&& import test
&&& test.func(2, 2)
&&& c = test.MyClass(2, 2)
&&& c.method()
是不是很简单!是的,没错,就是这样。
需要注意的是,test就是文件名。另外,模块名要能找到,我的是在当前目录下。
有时经常from...import...,这又是啥呢,来看看:
&&& from test import func, MyClass
# 多个函数或类以逗号分隔
&&& test.func(2, 2)
Traceback (most recent call last):
File "&stdin&", line 1, in &module&
NameError: name 'test' is not defined
&&& func(2, 2)
&&& c = MyClass(2, 2)
&&& c.method()
看到了吧!如果你不想把模块里的函数都导入,就可以这样。一方面避免导入过多用不到的函数增加负载,另一方面引用时可不加模块名。
如果想调用不加模块名,也想导入所有模块,可以这样:
&&& from test import *
&&& func(2, 2)
&&& c = MyClass(2, 2)
&&& c.method()
使用个星号就代表了所有。
提醒:在模块之间引用也是同样的方式。博客地址:http://lizhenliang.
QQ群:(Shell/Python运维开发群)
9.2 作为脚本来运行程序
所有的模块都有一个内置属性__name__,如果import一个模块,那么模块的__name__属性返回值一般是文件名。如果直接运行Python程序,__name__的值将是一个"__mian__"。
举例说明,根据上面程序做一个测试:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(a, b):
return a * b
class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b
def method(self):
return self.a * self.b
print __name__
# python test.py
与预期一样,打印出了“__main__”,再创建一个test2.py,导入这个模块:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import test
# python test2.py
打印出了模块名,这个结果输出就是test.py中的print __name__。
所以,我们在test.py里面判断下__name__值等于__main__时说明在手动执行这个程序:
#!/usr/bin/python
# -*- coding: utf-8 -*-
def func(a, b):
return a * b
class MyClass:
def __init__(self, a, b):
self.a = a
self.b = b
def method(self):
return self.a * self.b
if __name__ == "__main__":
print "我在手动执行这个程序..."
# python test.py
我在手动执行这个程序...
此时再运行test2.py试试,是不是打印为空!明白了吧!
9.3 安装第三方模块
在Python中安装外部的模块有几种方式:
1)下载压缩包,通过setuptools工具安装,这个在第一章Python基础知识里面用到过。推荐下载地址:http://pypi.python.org
2)easy_install工具安装,也依赖setuptools。
3)pip工具安装。推荐使用这个方式。
4)直接将压缩包解压到Python模块目录。但常常会出现import失败,不推荐。
5)在Windows下,除了上面几种方式以外,可以直接下载exe文件点击一步步安装。
pip与easy_install安装方式类似,主要区别在于easy_install不支持卸载软件,而pip支持。
推荐使用pip命令安装,简单方便。如果安装失败可以按顺序这么尝试:方式1 --& 方式2 --& 方式4
以安装setuptools举例上面几种安装方式:
# wget https://pypi.python.org/packages/32/3c/e853a68b703f347f5ed28ac70578/setuptools-26.1.1.tar.gz
# tar zxvf setuptools-26.1.1.tar.gz
# cd setuptools-26.1.1
# python setup.py install
# easy_install setuptools
# pip install setuptools
# pip uninstall setuptools
# pip search setuptools
cp -rf setuptools-26.1.1 /usr/local/lib/python2.7/dist-packages
9.4 查看模块帮助文档
前面几个章节已经使用几个内置模块了,比如collections、itertools等,导入与上面一样,这里不再过多说明了。
1)help()函数
当一个模块对其语法不了解时,可以查看帮助,以collections举例:
&&& import collections
&&& help(collections)
Help on module collections:
collections
/usr/lib/python2.7/collections.py
MODULE DOCS
http://docs.python.org/library/collections
# 注意:这里是这个模块的帮助文档,很详细的哦!
__builtin__.dict(__builtin__.object)
OrderedDict
defaultdict
__builtin__.object
_abcoll.Callable
_abcoll.Container
使用help()就能查看这个模块的内部构造,包括类方法、属性等信息。
也可以再对某个方法查看其用法:
&&& help(collections.Counter())
Help on Counter in module collections object:
class Counter(__builtin__.dict)
Dict subclass for counting hashable items.
Sometimes called a bag
or multiset.
Elements are stored as dictionary keys and their counts
are stored as dictionary values.
&&& c = Counter('abcdeabcdabcaba')
# count elements from a string
&&& c.most_common(3)
# three most common elements
[('a', 5), ('b', 4), ('c', 3)]
&&& sorted(c)
# list all unique elements
['a', 'b', 'c', 'd', 'e']
&&& ''.join(sorted(c.elements()))
# list elements with repetitions
'aaaaabbbbcccdde'
&&& sum(c.values())
# total of all counts
&&& c['a']
# count of letter 'a'
一般里面都是举例说明,可快速帮助我们回忆使用方法。
2)dir()函数查看对象属性
这个在前面也用到过,能看到对象的方法、属性等信息:
&&& dir(collections)
['Callable', 'Container', 'Counter', 'Hashable', 'ItemsView', 'Iterable', 'Iterator', 'KeysView', 'Mapping', 'MappingView', 'MutableMapping', 'MutableSequence', 'MutableSet', 'OrderedDict', 'Sequence', 'Set', 'Sized', 'ValuesView', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_abcoll', '_chain', '_class_template', '_eq', '_field_template', '_get_ident', '_heapq', '_imap', '_iskeyword', '_itemgetter', '_repeat', '_repr_template', '_starmap', '_sys', 'defaultdict', 'deque', 'namedtuple']
3)github上查看模块用法
Python官方模块下载地址http://pypi.python.org,所有的模块在这里都有。
打开网站后,在搜索框搜索你的模块名,在结果找到模块名点进去,会有一个 Home Page的连接,Python大多数模块都是托管在github上面,这个链接就是这个模块在github上面的地址,点击后跳转到github对应的模块页面,里面也有很详细模块使用方法。
9.5 导入模块新手容易出现的问题
还有一个新手经常犯的问题,写一个模块,比如使用itertools模块,为了说明这个测试文件是这个模块,就把文件名写成了这个模块名,于是就造成了下面错误:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import collections
c = collections.Counter()
for i in "Hello world!":
# python collections.py
Traceback (most recent call last):
File "collections.py", line 3, in &module&
import collections
File "/home/user/collections.py", line 4, in &module&
c = collections.Counter()
AttributeError: 'module' object has no attribute 'Counter'
抛出异常,明明在解释器里面可以正常导入使用啊,怎么会提示没Counter属性呢,问题就出现你的文件名与导入的模块名重名,导致程序import了这个文件,上面讲过文件名就是模块名。所以文件名不要与引用的模块名相同。
还有一个使用方法也说明下,使用as关键字设置模块别名,这样使用中就不用输入那么长的模块名了,按照上面的例子,把名字先改成collections1.py,做测试:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import collections as cc
c = cc.Counter()
for i in "Hello world!":
# python collections1.py
Counter({'l': 3, 'o': 2, '!': 1, ' ': 1, 'e': 1, 'd': 1, 'H': 1, 'r': 1, 'w': 1})
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@ 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所&&
是为多媒体数据提供的转码计算服务。它以经济、弹性和高可扩展的音视频转换方法,将多媒体数据转码成适合在PC、TV以...
快速、完全托管的TB/PB级数据仓库解决方案,向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更...
云数据库PPAS版,是阿里云与EnterpriseDB公司合作基于PostgreSQL高度兼容Oracle语法的...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
MaxCompute75折抢购
Loading...

我要回帖

更多关于 python 导入模块 路径 的文章

 

随机推荐