Python导入并运行位于不同目录中的python脚本[重复]
Posted
技术标签:
【中文标题】Python导入并运行位于不同目录中的python脚本[重复]【英文标题】:Python import and run a python script that is in a different directory [duplicate] 【发布时间】:2019-01-18 07:54:09 【问题描述】:我目前有一个使用 tkinter 制作的 GUI,允许用户选择单选按钮,这些单选按钮将导入执行不同功能的不同 python 脚本。其中一些脚本位于同一目录中,因此导入不是问题,但我在不同的目录中有一些脚本(由于依赖关系必须留在那里),但希望用户能够从中选择此脚本GUI 让它运行而不是他们必须进入终端并以这种方式运行脚本。
更多详情: 我当前的文件在 Finance/Ingest 中,而我在 dw/ 中有一个脚本 combine.py。
我想要的: 我有单选按钮,当用户单击提交按钮时,它调用此函数,该函数获取单选按钮值。如果值 == 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】:Python 沿着 python 路径查找模块。您可以通过多种方式进行设置。
将 PYTHONPATH 环境变量设置为指向包含 dw 的目录 将 dw 添加到您通过 pip/setuptools 安装的 python 包中 在你的程序中设置sys.path
指向包含dw的目录
最后一个解决方案并不理想,但通常最容易实施。假设您的模块位于../../dependencies/library
。由于sys.path
是一个可修改的列表,您可以这样做:
import sys
from os.path import abspath, dirname, join
sys.path.insert(0, abspath(join(dirname(__file__), '..', '..', 'dependencies', 'library')))
请注意,这假定 dw 模块是一个正确的 python 包。它应该是 dw.py
或名为 dw
的目录,其中包含一个名为 __init__.py
的文件(可以为空)。
但是,如果您要将它用作其他人将要运行的东西,则最好打包您的模块并通过 pip 安装它们。
【讨论】:
以上是关于Python导入并运行位于不同目录中的python脚本[重复]的主要内容,如果未能解决你的问题,请参考以下文章