从不同的文件夹导入 Python 个模块
Import Python modules from a different folder
我有以下目录结构,
/Scripts/myPyFile.py #myPyFile.py 从多个其他文件导入(/Scripts/x.py、/Scripts/y.py 等等)
def modA()
def 调制解调器 ()
/Script/allScripts/main.py(我希望main.py能够从myPyFile.py导入modA)
我做了 google 这个问题并尝试了几种方法,但由于 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"
在您的问题中,您详细说明 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
两个 __init__.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()
如果您想了解所有parents(文件夹),您可以随时快速查看:
from pathlib import Path
filepath = Path(__file__).resolve()
for i in range(len(filepath.parents)):
print(i, filepath.parents[i])
我有以下目录结构,
/Scripts/myPyFile.py #myPyFile.py 从多个其他文件导入(/Scripts/x.py、/Scripts/y.py 等等) def modA() def 调制解调器 ()
/Script/allScripts/main.py(我希望main.py能够从myPyFile.py导入modA)
我做了 google 这个问题并尝试了几种方法,但由于 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"
在您的问题中,您详细说明 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
两个 __init__.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()
如果您想了解所有parents(文件夹),您可以随时快速查看:
from pathlib import Path
filepath = Path(__file__).resolve()
for i in range(len(filepath.parents)):
print(i, filepath.parents[i])