Python: измените рабочий каталог скрипта на другой каталог для чтения констант - PullRequest
0 голосов
/ 09 ноября 2018

Мой скрипт пытается прочитать мои утилиты из другой папки. Я получаю ошибку импорта. 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
  • / дома / панты / золотой / utils.py

Вывод: Traceback (последний вызов был последним): Файл "check.py", строка 22, в импорт утилит ImportError: модуль с именем utils

отсутствует

Любые указатели будут очень полезны!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Вы допустили ошибку в своем скрипте.

os.chdir (dname + "/../../ dags / golden /"), только изменяет ваш текущий рабочий каталог, но не меняет значение переменной "abspath"

Таким образом, значение "dname" остается неизменным до и после вашего "os.chdir"

просто сделайте sys.path.append (dname + "/../../ dags / golden /"), вы получите то, что хотите.

Кстати, Python очень легко найти и изучить проблему. Может быть, вам просто нужно добавить печать, прежде чем использовать переменную. И не поддавайтесь удалению этих отпечатков, прежде чем выпускать свои сценарии.

0 голосов
/ 09 ноября 2018

Попробуйте это

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()
...