Wie lade ich ein Python-Modul mit seinem vollständigen Pfad?
Beachten Sie, dass die Datei überall im Dateisystem liegen kann.
Wie lade ich ein Python-Modul mit seinem vollständigen Pfad?
Beachten Sie, dass die Datei überall im Dateisystem liegen kann.
Sie können dies tun mit __import__
y chdir
:
def import_file(full_path_to_module):
try:
import os
module_dir, module_file = os.path.split(full_path_to_module)
module_name, module_ext = os.path.splitext(module_file)
save_cwd = os.getcwd()
os.chdir(module_dir)
module_obj = __import__(module_name)
module_obj.__file__ = full_path_to_module
globals()[module_name] = module_obj
os.chdir(save_cwd)
except Exception as e:
raise ImportError(e)
return module_obj
import_file('/home/somebody/somemodule.py')
Wenn wir Skripte im gleichen Projekt, aber in verschiedenen Verzeichnissen haben, können wir dieses Problem mit der folgenden Methode lösen.
In dieser Situation utils.py
ist in src/main/util/
import sys
sys.path.append('./')
import src.main.util.utils
#or
from src.main.util.utils import json_converter # json_converter is example method
Ich glaube, Sie können Folgendes verwenden imp.find_module()
y imp.load_module()
um das angegebene Modul zu laden. Sie müssen den Modulnamen aus dem Pfad abspalten, d.h. wenn Sie Folgendes laden wollen /home/mypath/mymodule.py
die Sie tun müssten:
imp.find_module('mymodule', '/home/mypath/')
...aber das sollte die Arbeit erledigen.
Sie können die pkgutil
Modul (insbesondere das walk_packages
Methode), um eine Liste der Pakete im aktuellen Verzeichnis zu erhalten. Von dort aus ist es trivial, die Methode importlib
Maschinen, um die gewünschten Module zu importieren:
import pkgutil
import importlib
packages = pkgutil.walk_packages(path='.')
for importer, name, is_package in packages:
mod = importlib.import_module(name)
# do whatever you want with module now, it's been imported!
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.