模块-自定义模块导入的相关问题

模块导入

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中。

posted @ 2021-12-20 22:33  dack_deng  阅读(62)  评论(0编辑  收藏  举报