1243 Stimmen

Wie kann ich andere Python-Dateien importieren?

Wie kann ich andere Dateien in Python importieren?

  1. Wie genau kann ich eine bestimmte Python-Datei importieren, z. B. import file.py ?
  2. Wie kann ich einen Ordner anstelle einer bestimmten Datei importieren?
  3. Ich möchte eine Python-Datei dynamisch zur Laufzeit laden, basierend auf dem Benutzer Eingabe.
  4. Ich möchte wissen, wie ich nur einen bestimmten Teil aus der Datei laden kann.

Zum Beispiel, in main.py Ich habe:

from extra import *

Damit habe ich zwar alle Definitionen in extra.py , obwohl ich vielleicht nur eine einzige Definition brauche:

def gap():
    print
    print

Was füge ich dem import Anweisung, um einfach die gap de extra.py ?

3voto

Xiao-Feng Li Punkte 600

So habe ich es gemacht, um eine Funktion aus einer Python-Datei aufzurufen, die flexibel für mich ist, um beliebige Funktionen aufzurufen.

import os, importlib, sys

def callfunc(myfile, myfunc, *args):
    pathname, filename = os.path.split(myfile)
    sys.path.append(os.path.abspath(pathname))
    modname = os.path.splitext(filename)[0]
    mymod = importlib.import_module(modname)
    result = getattr(mymod, myfunc)(*args)
    return result

result = callfunc("pathto/myfile.py", "myfunc", arg1, arg2)

3voto

Christoph Schranz Punkte 686

Für den Fall, dass die Modul die Sie importieren möchten, ist nicht in einem Unterverzeichnis , dann versuchen Sie Folgendes und führen Sie app.py aus dem tiefsten gemeinsamen übergeordneten Verzeichnis:

Verzeichnisstruktur:

/path/to/common_dir/module/file.py
/path/to/common_dir/application/app.py
/path/to/common_dir/application/subpath/config.json

Sur app.py den Pfad des Clients an sys.path anhängen:

import os, sys, inspect

sys.path.append(os.getcwd())
from module.file import MyClass
instance = MyClass()

Optional (wenn Sie z. B. Konfigurationen laden) (Inspect scheint für meine Anwendungsfälle die robusteste Lösung zu sein)

# Get dirname from inspect module
filename = inspect.getframeinfo(inspect.currentframe()).filename
dirname = os.path.dirname(os.path.abspath(filename))
MY_CONFIG = os.path.join(dirname, "subpath/config.json")

ausführen.

user@host:/path/to/common_dir$ python3 application/app.py

Diese Lösung funktioniert bei mir sowohl in cli als auch in PyCharm.

2voto

Farshid Ashouri Punkte 13602

Eine sehr unbekannte Eigenschaft von Python ist die Möglichkeit, die zip Dateien:

library.zip
|-library
|--__init__.py

Die Datei __init__.py des Pakets enthält Folgendes:

def dummy():
    print 'Testing things out...'

Wir können ein weiteres Skript schreiben, das ein Paket aus dem Zip-Archiv importieren kann. Es ist nur notwendig, die Zip-Datei zum sys.path hinzuzufügen.

import sys
sys.path.append(r'library.zip')

import library

def run():
    library.dummy()

run()

2voto

Sundar Gsv Punkte 597

Einfach eine Python-Datei in eine andere Python-Datei importieren

Sagen wir, ich habe helper.py python-Datei, die eine Anzeigefunktion hat wie,

def display():
    print("I'm working sundar gsv")

Jetzt in app.py können Sie die Anzeigefunktion verwenden,

import helper
helper.display()

Das Ergebnis,

I'm working sundar gsv

HINWEIS: Die Erweiterung .py muss nicht angegeben werden.

1voto

Jonathan Punkte 5990

Es mag verrückt klingen, aber Sie können einfach einen symbolischen Link zu der Datei erstellen, die Sie importieren möchten, wenn Sie nur ein Wrapper-Skript zu ihr erstellen.

CodeJaeger.com

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.

Powered by:

X