企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
在Python中,安装第三方模块,是通过包管理工具pip完成的。 如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了。 如果你正在使用Windows,请参考[安装Python](http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014316090478912dab2a3a9e8f4ed49d28854b292f85bb000)一节的内容,确保安装时勾选了`pip`和`Add python.exe to Path`。 在命令提示符窗口下尝试运行`pip`,如果Windows提示未找到命令,可以重新运行安装程序添加`pip`。 注意:Mac或Linux上有可能并存Python 3.x和Python 2.x,因此对应的pip命令是`pip3`。 现在,让我们来安装一个第三方库——Python Imaging Library,这是Python下非常强大的处理图像的工具库。不过,PIL目前只支持到Python 2.7,并且有年头没有更新了,因此,基于PIL的Pillow项目开发非常活跃,并且支持最新的Python 3。 一般来说,第三方库都会在Python官方的[pypi.python.org](https://pypi.python.org/)网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫[Pillow](https://pypi.python.org/pypi/Pillow/),因此,安装Pillow的命令就是: ~~~ ~~~ pip install Pillow ~~~ ~~~ 耐心等待下载并安装后,就可以使用Pillow了。 有了Pillow,处理图片易如反掌。随便找个图片生成缩略图: ~~~ ~~~ >>> from PIL import Image >>> im = Image.open('test.png') >>> print im.format, im.size, im.mode PNG (400, 300) RGB >>> im.thumbnail((200, 100)) >>> im.save('thumb.jpg', 'JPEG') ~~~ ~~~ 其他常用的第三方库还有MySQL的驱动:`mysql-connector-python`,用于科学计算的NumPy库:`numpy`,用于生成文本的模板工具`Jinja2`,等等。 ### 模块搜索路径 当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: ~~~ ~~~ >>> import mymodule Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named mymodule ~~~ ~~~ 默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在`sys`模块的`path`变量中: ~~~ ~~~ >>> import sys >>> sys.path ['', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python34.zip', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages'] ~~~ ~~~ 如果我们要添加自己的搜索目录,有两种方法: 一是直接修改`sys.path`,添加要搜索的目录: ~~~ ~~~ >>> import sys >>> sys.path.append('/Users/michael/my_py_scripts') ~~~ ~~~ 这种方法是在运行时修改,运行结束后失效。 第二种方法是设置环境变量`PYTHONPATH`,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。