Этот фрагмент из более раннего ответа здесь, на SO. Это около года (и ответ не был принят). Я новичок в Python, и я нахожу системный путь настоящей болью. У меня есть несколько функций, написанных в сценариях в разных каталогах, и я хотел бы иметь возможность импортировать их в новые проекты, не перепрыгивая через обручи.Это правильный способ импорта скриптов python, находящихся в произвольных папках?
Это фрагмент кода:
def import_path(fullpath):
""" Import a file with full path specification. Allows one to
import from anywhere, something __import__ does not do.
"""
path, filename = os.path.split(fullpath)
filename, ext = os.path.splitext(filename)
sys.path.append(path)
module = __import__(filename)
reload(module) # Might be out of date
del sys.path[-1]
return module
Его отсюда: How to do relative imports in Python?
Я хотел бы получить некоторую обратную связь относительно того, может ли я использовать его или нет - и если есть какие-либо нежелательные побочные эффекты, может быть неочевидным для новичков.
я намерен использовать это что-то вроде этого:
import_path(/home/pydev/path1/script1.py)
script1.func1()
и т.д.
Является ли это безопасно ", чтобы использовать функцию в пути я намереваюсь?
В версии 3.3 имп устарел в пользу importlib. Тем не менее, в 3.2, похоже, нет никакого эквивалентного использования importlib, поэтому, если вам нужно работать в обеих средах, спасите себя головной болью и придерживайтесь imp. – Yourpalal