模块-自定义模块导入的相关问题
模块导入
1.1 模块和包
在Python中一般对文件和文件的称呼(很多开发者的平时开发中也有人都称为模块)
- 一个py文件,模块(module)。
- 含多个py文件的文件夹,包(package)。
注意:在包(文件夹)中有一个默认内容为空的__init__.py
的文件,一般用于描述当前包的信息(在导入他下面的模块时,也会自动加载)。 - 在python2.x中必须要有,如果没有导入包就会失败
- 在python3.x中可有可无
所以为了项目的可移植性,以后都统一使用创建package文件,因为其会自动创建__init__.py
文件
1.2 导入的相关问题
当定义好一个模块或包之后,如果想要使用其中定义的功能,必须要先导入,然后才能使用。
导入,其实就是将模块或包加载在内存中,以后再去内存中去拿就行。
[
'当前执行脚本所在的目录', /Users/dack/PycharmProjects/ceshi/bin
/Users/dack/PycharmProjects/ceshi/123
'/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_display',
'/Library/Frameworks/Python.framework/Versions/3.9/lib/python39.zip',
'/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9',
'/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages',
'/Applications/PyCharm.app/Contents/plugins/python/helpers/pycharm_matplotlib_backend'
]
想要导入任意的模块和包,都必须写在如上路径下,才能被找到。如果没在这里面,python文件运行时是会报错的
那么如果将模块导入到此目录下呢?
"""方式一,这种方式一般不用,因为使用的固定的路径,一般在项目开发时,python项目文件都是放在服务器中去跑的,这是你写的固定路径从而失效"""
import sys
sys.path.append("路径A")
import xxxxx # 导入路径A下的一个xxxxx.py文件
"""方式二,常用,在当前入口函数这里进行添加当前项目的路径到sys路径下,例如当前所在的项目路径如下:/Users/dack/PycharmProjects/ceshi_project/bin"""
import sys
sys.path.append(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) # 当前的路口py文件
# 添加进去的系统路径如下:/Users/dack/PycharmProjects/ceshi_project
1.3 导入项目路径到sys.path中注意的问题
一般我们在pycharm中运行项目文件时,pycharm会自动的将项目路径加入到sys.path中。但是通常情况下我们的项目文件是放在服务器上运行的,输入指定的命令行进行运行入口文件。那个时候是没有pycharm的,所以会报错。为了防止这个问题,我们都将项目文件手动的添加到sys.path中。