Python多层引用问题
- python被run的.py文件即为当前程序的主程序。其所在的目录即为python解释器的当前路径。
- 通过
from a import b
方法调用时, a的位置必须和主程序的.py文件在同一目录。 - 通过
frome .x import y
方法调用时,x文件必须是在python解释器当前路径(主程序所在目录)的下级目录(下几级都可以)。
文件的调用
★★★为了使得代码具有可打包性(可打包成可执行文件)。在编写文件调用代码时,需要避免直接使用文件的相对路径调用文件, 应该通过获取文件当前绝对路径, 再使用文件的绝对路径调用文件。
- 文件的绝对路径的获取需要用到两个python标准库
sys
和os
- 代码示例:
import sys import os BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0])) filename = input("请输入你要使用的文件名:") FILE_DIR = os.path.join(BASE_DIR, filename)
sys.argv[0]
用于是获取程序名称os.path.realpath()
用于获取在系统中的绝对路径, 将其与sys.argv[0]
结合使用从而获得该程序的绝对路径os.path.dirname()
用于获取所在文件夹, 与os.path.realpath(sys.argv[0])
从而获取当前程序所在文件夹的绝对路径os.path.join(path1, path2)
用于将path1
和path2
连接起来, 组成一个新的路径- 通过以上方法调用文件, 即使通过单文件打包的方式打包python程序, 也能找到与可执行文件处于同一目录中的其他文件