解决办法: sys.path.append()
os.getcwd() # 当前路径,即vscode打开的folder所在位置
print("**************")
print("系统路径:") # 会自动临时添加所运行的py文件所在位置
for pt in sys.path:
print("\t",pt)
print("**************")
sys.path.append(r"E:\python小脚本\测试导入\projects")
sys.path.append(os.getcwd())
被导入的文件: function1_1a.py
# 被导入的文件内容
import os
path = r"E:\python小脚本\测试导入\projects\project1\project1_1\function1_1a.py"
print("\n\n我是文件: ","function1_1a.py")
print("当前工作路径: ",os.getcwd())
print("我的位置: ", path)
if __name__ == '__main__':
print("我作为main程序执行开始...")
print("我的位置: ", path)
print("我作为main程序执行结束...\n")
主程序: test_project1_1.py
print("\n\n开始导入...")
import os
import sys
print("\n\n当前路径:")
print(os.getcwd())
print("**************")
print("系统路径:")
for pt in sys.path:
print("\t",pt)
print("**************")
sys.path.append(r"E:\python小脚本\测试导入\projects")
sys.path.append(os.getcwd())
import function1_1a
# import function1_1a # 注意这里不会重复导入
# from . import function1_1a # 这样做没有用 # 可能必须要在Linux下才可以这么干
import project1_1_1.function1_1_1a
import project1_1_1.project1_1_1_1.function1_1_1_1a
import project3.function3c
import project3.project3_3.function3_3c
import project3.project3_3.project3_3_3.function3_3_3c
# import project3.project3_3.project3_3_3.project3_3_3_3.function3_3_3_3c
from project3.project3_3.project3_3_3.project3_3_3_3 import function3_3_3_3c # 该语句同上,效果相同
# from project3 import project3_3.project3_3_3.project3_3_3_3.function3_3_3_3c # 该语句会语法错误!!!!!!!!
########################################
print("\n\n\n完成导入...")
print("\n\n当前路径:")
print(os.getcwd())
print("**************")
# print("系统路径:")
# for pt in sys.path:
# print("\t",pt)
# print("**************")
print(type(os))
print(type(sys))
print(type(function1_1a))
print(type(project1_1_1.function1_1_1a))
print(type(project1_1_1.project1_1_1_1.function1_1_1_1a))
print(type(project3.function3c))
print(type(project3.project3_3.function3_3c))
print(type(project3.project3_3.project3_3_3.function3_3_3c))
print(type(project3.project3_3.project3_3_3.project3_3_3_3.function3_3_3_3c))
执行结果:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS E:\> & 'D:\Python\Python37\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2020.8.106424\pythonFiles\lib\python\debugpy\launcher' '50677' '--' 'e:\python小脚本\测试导入\projects\project1\project1_1\test_project1_1.py'
开始导入...
当前路径:
E:\
**************
系统路径:
e:\python小脚本\测试导入\projects\project1\project1_1
D:\Python\Python37\python37.zip
D:\Python\Python37\DLLs
D:\Python\Python37\lib
D:\Python\Python37
D:\Python\Python37\lib\site-packages
D:\Python\Python37\lib\site-packages\win32
D:\Python\Python37\lib\site-packages\win32\lib
D:\Python\Python37\lib\site-packages\Pythonwin
**************
我是文件: function1_1a.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project1\project1_1\function1_1a.py
我是文件: function1_1_1a.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project1\project1_1\project1_1_1\function1_1_1a.py
我是文件: function1_1_1_1a.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project1\project1_1\project1_1_1\project1_1_1_1\function1_1_1_1a.py
我是文件: function3c.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project3\function3c.py
我是文件: function3_3c.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project3\project3_3\function3_3c.py
我是文件: function3_3_3c.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project3\project3_3\project3_3_3\function3_3_3c.py
我是文件: function3_3_3_3c.py
当前工作路径: E:\
我的位置: E:\python小脚本\测试导入\projects\project3\project3_3\project3_3_3\project3_3_3_3\function3_3_3_3c.py
完成导入...
当前路径:
E:\
**************
<class 'module'>
<class 'module'>
<class 'module'>
<class 'module'>
<class 'module'>
<class 'module'>
<class 'module'>
<class 'module'>
<class 'module'>
PS E:\>
要点总结:
import os
import sys
print("\n\n当前路径:")
print(os.getcwd()) # 这个是VSCODE实际打开的文件夹的路径
print("**************")
print("系统路径:")
for pt in sys.path: # sys.path 会自动添加当前执行的py文件的路径
print("\t",pt)
print("**************")
# sys.path.append(os.getcwd())
########################################
print("\n\n\n完成导入...")
print("\n\n当前路径:")
print(os.getcwd())
print("**************")
# print("系统路径:")
# for pt in sys.path:
# print("\t",pt)
# print("**************")
执行结果:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS E:\> & 'D:\Python\Python37\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2020.8.106424\pythonFiles\lib\python\debugpy\launcher' '50689' '--' 'e:\python小脚本\测试导入\projects\project1\project1_1\testPATH.py'
当前路径:
E:\
**************
系统路径:
e:\python小脚本\测试导入\projects\project1\project1_1
D:\Python\Python37\python37.zip
D:\Python\Python37\DLLs
D:\Python\Python37\lib
D:\Python\Python37
D:\Python\Python37\lib\site-packages
D:\Python\Python37\lib\site-packages\win32
D:\Python\Python37\lib\site-packages\win32\lib
D:\Python\Python37\lib\site-packages\Pythonwin
**************
完成导入...
当前路径:
E:\
**************
PS E:\>
拓展:获取父目录
方法: os.path.realpath("..")
。
sys.path.append(os.getcwd()) # 将当前目录添加到系统路径
sys.path.append("..") # 无效
sys.path.append(".") # 无效
sys.path.append(os.path.realpath(".")) # 当前目录,即os.getcwd()
sys.path.append(os.path.realpath("..")) # 当前目录的父目录,即os.getcwd()的父目录
代码如下:
import os
import sys
print("\n\n当前路径:")
# print(os.getcwd()) # 这个是VSCODE实际打开的文件夹的路径
print("**************")
print("系统路径:")
for pt in sys.path: # sys.path 会自动添加当前执行的py文件的路径
print("\t",pt)
print("**************")
########################################
print("\n\n\n完成导入...")
print("\n\n当前路径:")
print(os.getcwd())
print("**************")
# sys.path.append(os.getcwd())
sys.path.append("..") # 无效
sys.path.append(".") # 无效
sys.path.append(os.path.realpath(".")) # 当前目录,即os.getcwd()
sys.path.append(os.path.realpath("..")) # 当前目录的父目录,即os.getcwd()的父目录
print("系统路径:")
for pt in sys.path:
print("\t",pt)
print("**************")
print("\n\n当前路径:")
print(os.getcwd())
print("**************")
实验结果:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS E:\python小脚本\测试导入\projects\project1> & 'D:\Python\Python37\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2020.8.106424\pythonFiles\lib\python\debugpy\launcher' '51770' '--' 'e:\python小脚本\测试导入\projects\project1\project1_1\testPATH.py'
当前路径:
**************
系统路径:
e:\python小脚本\测试导入\projects\project1\project1_1
D:\Python\Python37\python37.zip
D:\Python\Python37\DLLs
D:\Python\Python37\lib
D:\Python\Python37
D:\Python\Python37\lib\site-packages
D:\Python\Python37\lib\site-packages\win32
D:\Python\Python37\lib\site-packages\win32\lib
D:\Python\Python37\lib\site-packages\Pythonwin
**************
完成导入...
当前路径:
E:\python小脚本\测试导入\projects\project1
**************
系统路径:
e:\python小脚本\测试导入\projects\project1\project1_1
D:\Python\Python37\python37.zip
D:\Python\Python37\DLLs
D:\Python\Python37\lib
D:\Python\Python37
D:\Python\Python37\lib\site-packages
D:\Python\Python37\lib\site-packages\win32
D:\Python\Python37\lib\site-packages\win32\lib
D:\Python\Python37\lib\site-packages\Pythonwin
..
.
E:\python小脚本\测试导入\projects\project1
E:\python小脚本\测试导入\projects
**************
当前路径:
E:\python小脚本\测试导入\projects\project1
**************
PS E:\python小脚本\测试导入\projects\project1>