从不同的文件夹

时间:2018-02-15 17:38:21

标签: 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导入了其他模块,我收到了错误。

什么是最好的方法,而不必将其添加到路径变量?我在使用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"

1 个答案:

答案 0 :(得分:1)

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

然后你做:

sys.path.insert(0, r'C:\Users\Configuration\Script')

似乎您在目录名称上缺少尾随's'。

我就是这样做的:

磁盘上的结构:

C:\
 |
 test\
    |
    py1\
    | |
    | __init__.py 
    | file1.py
    |
    py2\
      |
      __init__.py
      file2.py

两个__init__.py个文件都是空的

C:\测试\ 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:\测试\ 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])
相关问题