最近有一个项目要使用python连接mysql数据库,最方便的就是使用python的第三方依赖包pymysql了。但集群环境的调度机上只有python的最基本组件而且不让装这类第三方依赖包,就只能想办法将pymysql的依赖包直接在项目中作为模块导入了。
作为一个只看了几小时python语法的菜鸟,很多概念都不清楚,理论可以说知道一些但都没有实践过,语句基本都只能依样画葫芦的修改然后看结果,话不多说直接开始各种尝试!
大前提:python环境已装好
首先第一步,要想知道模块导入的结果,第一个碰到的问题就是在windows下首先得要能执行一个python文件看看输出结果吧。
一、windows下py文件的执行
新建一个test.py文件,位置在C:/test/test2(后续都称目录)
窗口输入cmd打开命令行,cd命令进入目录下(一定要进入当前目录),输入命令python test.py就可以执行py文件了。
(这个步骤很简单,之所以要单独拎出来是一开始的时候连python命令在哪使用,要进入当前目录都不清楚,这里大概理了下思路,需要明白一些基础)
二、python模块、包概念
Python 模块(Module),就是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块里面可以定义函数,类和变量,模块里也能包含可执行的代码。
包,是一个分层次的目录结构,定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。 其实就是一个文件夹,不过文件夹下必须要有__init__.py模块,这个模块用来标识这个是一个包。
任何一个python文件,都可以以两种方式执行,一个是作为模块被导入,一个是做为python脚本文件被执行(也就是用python XX.py)
三、模块的导入示例
工具:pycharm
1.准备文件
在目录下有文件结构如下:
|—test
|—test1
|—package_runoob
|—__init__.py
|—runoob1.py
|—runoob2.py
|—test.py
|—__init__.py
|—test2
|—import_otherModule.py
*注:没有截图的__init__.py文件说明该文件内容为空
2.导入当前目录下的模块
以test.py作为示例。
分析:
package_runoob与调用脚本test.py处于同级目录,可以直接导入模块。
*注:模块导入有两种方法:
(1)from ,可以从模块中导入某个类或某个方法,在后面就可以直接使用该类或方法,这种方法导入需要注意后续自定义的类和方法尽量不要同名避免混淆。
(2)import module_name as a,直接导入某个模块,调用时需要a.类名或者a.方法名。
3.导入其他目录下的模块
分析:
首先通过相对路径,将当前文件的上一级目录添加到python解释器搜寻文件目录。接下来就可以将该目录的包进行导入。
import test1:会导入test1模块,首先执行test1的__init__.py,而这个py文件中又导入了package_runoob,因此又会先执行package_runoob.__init__.py,所以结果显示“package_runoob init”。
test1.test1print()方法:之所以可以调用这个方法是因为__init__.py已经执行过了,这个方法已经在内存空间,结果显示出“this is print in test1 init”。
runoob2.runoob2_test():模块已经导入,可以使用模块.方法使用模块内的方法。
总结:
导入其他目录的方法可以使用相对导入,通过sys.path.append("相对路径")加入路径,然后再进行导入。
".."表示上一层目录,"../.."表示上两层,"../lib"表示上层目录下的lib目录。类推。
可以在这个界面测试语句,每次enter都会返回当前语句的执行结果。terminal界面和cmd出来的windows界面功能一样,可以在该界面直接运行 python XXX.py运行某个python文件。