系统:CentOS6.8 python版本:python3.5
文本编辑器:vim
python中我们很多时候,需要将自己的py文件导入到python路径中,但是我们自己的文件自身并不在python默认的库文件路径下,这时候就需要我们自己将我们的py文件import进入了
下面示例怎么导入自己的第三方模块,我们首先需要自己创建一个.py文件,名字随意明名了,但是不要和python内部模块重命,内部模块路径在/usr/lib/python3.5/site-packages。要不然使用python提供的一些模块的方法时就悲剧了。
我们写代码看看一个列表是否是含有列表嵌套,如果有嵌套,就拆开输出,环境python3,命名为liname.py
#!/usr/bin/env python3
def print_list(the_list): 传出一个列表参数 for item in the_list: 挨个遍历列表元素 if isinstance(item,list): 判断每个元素是否为列表 print_list(item) 调用自身做 else: print(item)
我们想要将这个.py文件变成一个模块,我们可以使用Python包索引(Python Package Index,PyPI)这 样一个互联网中第三库的集中管理,我们首先创建一个目录,名字还是随意啊,比如就叫dog
在这个目录中创建一个名字为setup.py的文件,文件内容如下所示:
现在dog这个目录中已经包含了两个文件setup.py和lsname.py这个文件,我们在终端中输入命令: python3 setup.py sdist ,然后目录下会多出几个文件和目录,如图所示
然后我们使用命令: python3 setup.py install 安装
然后我们再python3的交互式命令行下导入模块,输入一个列表,然后调用,会触发下列异常
这是因为我们的python的主程序中的代码模块与一个名为__main__的命名空间关联,将代码放在其单独的模块中时,python会自动创建与模块同名的命名空间。因此我们的模块中的代码会与一个名为liname的命名空间关联
我们刚进入到python的交互式命令行的时候是和__main__这个命名空间相关联的,我们想要使用liname这个空间的print_list方法时不能单纯的使用这个函数,而需要这样使用liname.print_list()这样子使用,比如:
这样子就完全没有问题了。
如果我们自己本身写了一段很好的代码,想将它贡献出去,除了github外,我们可以放在pypi这个网站上,也就是我们使用pip或者easy_install这样的命令安装
我们先在PyPI网站上(http://pypi.python.org/),来注册我们的信息
注册完成后我们就开始向PyPI上传我们的代码,上传时我们要知道我们注册时的账号和密码,因为接下来会用到
因为我没什么好的代码贡献所以,后面的步骤略去,进行完了这些步骤,我们就可以上传了,
我们使用命令:python3 setup.py upload
至此我们自己写的代码就贡献给了PyPI社区,别人如果想要安装我们这个模块,就可以通过pip或者easy_install这种方式来安装我们的模块了