Python导入并运行其他目录中的python脚本

时间:2018-08-10 16:51:29

标签: python tkinter python-import

我目前有一个用tkinter制作的GUI,允许用户选择单选按钮,这些单选按钮将导入不同的python脚本,这些脚本均执行不同的功能。其中一些脚本位于同一目录中,因此导入不是问题,但是我在其他目录中有一些脚本(由于依赖性而不得不保留在该目录中),但希望用户能够从中选择该脚本要使其运行的GUI,而不必进入终端并以这种方式运行脚本。

更多详细信息: 当我在dw /

中有一个脚本Combine.py时,我当前的文件在Finance / Ingest中。

我想要什么: 我有单选按钮,当用户单击“提交”按钮时,它将调用此函数,该函数获取单选按钮的值。如果值== 1,那么我希望它导入脚本并运行它。下面是我目前拥有的东西,但它总是说“找不到模块dw”。任何帮助将不胜感激!!!

def Rel_Button():
     Run_DB_Rel_Parse = DB_Rel_Parse.get()
     Run_DB_Req_Rel = DB_Req_Rel.get()
     Ingest_DB_Rel = DB_Rel.get()

     if Run_DB_Rel_Parse == 1:
          import dw.combine

1 个答案:

答案 0 :(得分:0)

Python沿着python路径查找模块。您可以通过多种方式进行设置。

  • 设置PYTHONPATH环境变量以指向包含dw的目录
  • 将dw添加到通过pip / setuptools安装的python软件包中
  • 在程序中设置ngModelChange指向包含dw的目录

最后一个解决方案并不理想,但是通常最容易实现。假设您的模块位于<input [(ngModel)]="counter" [style.border-color]="counter > 2 ? '#ff4d4d' : '#dbdbdb'" class="input" type="number"> 中。由于sys.path是可修改的列表,因此您可以执行以下操作:

../../dependencies/library

请注意,这假设dw模块是正确的python软件包。它应该是sys.path或一个名为import sys from os.path import abspath, dirname, join sys.path.insert(0, abspath(join(dirname(__file__), '..', '..', 'dependencies', 'library'))) 的目录,其中包含一个名为dw.py(可以为空)的文件。

但是,如果要将它用作其他人要运行的东西,则最好打包模块并通过pip安装所有模块。