Python 3.x 从其他文件夹导入Python模块

Python 3.x 从其他文件夹导入Python模块,python-3.x,windows-7,windows-7-x64,Python 3.x,Windows 7,Windows 7 X64,我有以下目录结构 /Scripts/myPyFile.py#myPyFile.py不从多个其他文件(/Scripts/x.py、/Scripts/y.py等等)中插入 def modA() def ModB() /Script/allScripts/main.py(我希望main.py能够从myPyFile.py导入modA) 我在谷歌上搜索了这个问题,并尝试了一些方法,但由于myPyFile.py导入了其他模块,所以出现了错误 不必将其添加到path变量的最佳方法是什么?我使用的是Win7 P

我有以下目录结构

/Scripts/myPyFile.py#myPyFile.py不从多个其他文件(/Scripts/x.py、/Scripts/y.py等等)中插入 def modA() def ModB()

/Script/allScripts/main.py(我希望main.py能够从myPyFile.py导入modA)

我在谷歌上搜索了这个问题,并尝试了一些方法,但由于myPyFile.py导入了其他模块,所以出现了错误

不必将其添加到path变量的最佳方法是什么?我使用的是Win7 Python 3.4

我已经尝试了链接解决方案,但它对我不起作用

sys.path.insert(0, r'C:\Users\Configuration\Script')
from myPyFile import getGatewayDevId   #This gives so many errors about myPyFile import. Same issue if I try "import myPyFile"

在您的问题中,您详细说明了
myPyFile.py
位于目录
/Scripts
(请注意“Scripts”末尾的“s”)

然后你会:

sys.path.insert(0, r'C:\Users\Configuration\Script')
目录名上似乎缺少一个尾随的“s”


我就是这样做的:

磁盘上的结构:

C:\
 |
 test\
    |
    py1\
    | |
    | __init__.py 
    | file1.py
    |
    py2\
      |
      __init__.py
      file2.py
两个
\uuuu init\uuuuu.py
文件都是空的

C:\test\py1\file1.py

# file1.py

def my_function1():
    print('{}.my_function1()'.format(__file__))

def my_function2():
    print('{}.my_function2()'.format(__file__))


def main():
    my_function1()
    my_function2()

if __name__ == '__main__':
    main()
现在我们正在将file1导入file2

C:\test\py2\file2.py

# file2.py

import sys
from pathlib import Path 

filepath = Path(__file__).resolve()
root_folder = filepath.parents[1]
sys.path.append(str(root_folder))

from py1 import file1 

file1.my_function1()
file1.my_function2()
运行file2.py可提供以下正确输出:

C:\test\py1\file1.py.my_function1()
C:\test\py1\file1.py.my_function2()
如果您想了解所有家长(文件夹),可以随时快速检查:

from pathlib import Path 

filepath = Path(__file__).resolve()
for i in range(len(filepath.parents)):
    print(i, filepath.parents[i])

如果完整路径不起作用,为什么相对导入会起作用?请解释。有了这两行,你能用完整的回溯//错误更新你的问题吗