【问题标题】:Python: Change the script's working directory to a different directory to read constantsPython:将脚本的工作目录更改为不同的目录以读取常量
【发布时间】:2018-11-09 07:27:10
【问题描述】:

我的脚本正在尝试从不同的文件夹中读取我的实用程序。我不断收到导入错误。 PFB 我的脚本:

import sys
import os

abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname+"/../../dags/golden/")
dname = os.path.dirname(abspath)
sys.path.append(dname)

import utils
semantics_config = utils.get_config()

我的文件夹结构如下:

  • /home/scripts/golden/script.py
  • /home/dags/golden/utils.py

输出是: 回溯(最近一次通话最后): 文件“check.py”,第 22 行,在 导入实用程序 ImportError: 没有名为 utils 的模块

任何指针都会有很大帮助!

【问题讨论】:

  • 你应该显示你的脚本产生的完整输出。

标签: python directory constants


【解决方案1】:

试试这个

import sys
import os

abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname+"/../../dags/golden/")
dname = os.getcwd()
sys.path.append(dname)

import utils
semantics_config = utils.get_config()

您再次将“dname”指定为旧路径。 所以使用os.getcwd()

import sys
import os

abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
sys.path.append(dname+"/../../dags/golden/")

import utils
semantics_config = utils.get_config()

【讨论】:

  • 工作就像一个魅力!谢谢你:)
【解决方案2】:

你在脚本中犯了一个错误。

os.chdir(dname+"/../../dags/golden/"),只改变你当前的工作目录,不改变变量“abspath”的值

所以“dname”的值在你的“os.chdir”之前和之后保持不变

只要做 sys.path.append(dname+"/../../dags/golden/"),你就会得到你想要的。

顺便说一句,python 很容易定位问题和学习。也许,您只需要在使用变量之前添加打印。并且,在发布脚本之前不要伪造删除这些打印。

【讨论】:

    猜你喜欢
    • 2010-11-28
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2010-10-13
    • 2014-04-12
    相关资源
    最近更新 更多