我把问题放在下图中:
修改 接下来的问题是:
如何让script_A1从script_B2导入函数?
以前曾提出过类似的问题。但大多数答案都建议将模块/脚本/包(无论如何)添加到PATH变量中。例如:
sys.path.append('...')
但是将模块添加到PATH变量只是觉得错误。我不想以任何方式改变我的系统。当我的应用程序关闭时,我希望我的Python环境干净且不受影响。我担心在我的系统上添加不受控制的模块到PATH变量会导致后来的麻烦。
感谢您帮助我: - )
答案 0 :(得分:5)
您可以使用将顶部文件夹添加到路径的技巧:
import sys
sys.path.append('..')
import folderB.something
如果您愿意,也可以使用imp.load_source。
答案 1 :(得分:0)
将它放在script_A1的顶部;
from folderB.script_B2 import YourClass as your_class
答案 2 :(得分:0)
我想我解决了这个问题。
通过以下方式,您可以将父目录附加到PATH。把它放在script_A1
:
import sys
import os
myDir = os.path.dirname(os.path.abspath(__file__))
parentDir = os.path.split(myDir)[0]
if(sys.path.__contains__(parentDir)):
print('parent already in path')
pass
else:
print('parent directory added')
sys.path.append(parentDir)
# Now comes the rest of your script
您可以通过打印来验证父目录myProject
是否确实已添加到PATH中:
print(sys.path)
由于父目录myProject
现在是PATH的一部分,因此您可以从其任何子目录中导入脚本/模块/任何内容。这是从script_B2
导入folder_B
的方式:
import folder_B.script_B2 as script_B2
关闭应用程序后,您可以验证Python环境是否已恢复到其初始状态。只需再次打印PATH并检查您附加的目录是否已经消失。