Python Apelarea funcției din alt fișier (Programare, Python, Funcție)

Furtună de vânt1981 a intrebat.

Folosesc Python 2.7 pe Windows 7 Professional.

Încerc să apelez o funcție salvată într-un alt fișier pentru a fi executată în this file‘s code.

Funcția numită dosomething este găsită în anotherfile.py

anotherfile.py se află în același director ca și codul curent.

Apelul meu în this file este simplă:

import anotherfile

print anotherfile.dosomething

Primesc o eroare: No module named anotherfile

Problema este aceeași pe care am găsit-o în această postare

Nu înțeleg soluția, dar aș dori orice perspectivă?

Vă mulțumesc.

EDIT: Celelalte întrebări/răspunsuri discută despre resetarea CLASSPATH și setarea PYTHONPATH. Am explorat acest lucru, dar nu eram sigur cum să fac acest lucru. Poate că este relevant?

Comentarii

  • anotherfile.dosomething() din moment ce este o funcție –  > Por depperm.
  • Când fac acest lucru, obțin NameError: name 'anotherfile' is not defined –  > Por Furtuna de vânt1981.
4 răspunsuri
arsho

Să avem două fișiere în același director. Fișierele se numesc main.py și another.py.

Scrieți mai întâi o metodă în another.py:

def do_something():
    return "This is the do something method"

Apoi apelați metoda din main.py. Aici este main.py:

import another
print another.do_something()

Run main.py și veți obține o ieșire ca aceasta:

This is the do something method

N.B.: Codul de mai sus este executat folosind Python 2.7 în Windows 10.

Comentarii

  • Verificați dacă ambele fișiere se află în același director și asigurați-vă că nu există un director cu același nume de fișier –  > Por arsho.
  • Ambele fișiere se află în același director. Este un computer nou și nu există fișiere cu același nume în alte directoare. –  > Por Windstorm1981.
drew

Specificați modulul, apoi fișierul și apoi importul astfel:

from this_module.anotherfile import dosomething

sau dacă doriți toate funcțiile din „alt fișier.py”

from this_module.anotherfile import *

și apoi puteți apela comanda „dosomething” fără prefixul „anotherfile”.

Comentarii

  • Aceeași problemă. din anumite motive, codul meu din „acest fișier” nu vede anotherfile.py care se află în același director. –  > Por Windstorm1981.
  • Vedeți răspunsul meu editat (am uitat să includ modulul în import) încercați noua sugestie –  > Por drew.
  • ce anume este this_module? Sunt în „acest fișier” și am linii de cod. Nu există funcții (încă) –  > Por Windstorm1981.
  • „this_module” s-ar referi la aplicația în care lucrați. De exemplu, „mysite” ar fi un modul. (în esență, directorul) –  > Por drew.
  • îmi pare rău că sunt dens. Codific acest lucru în Spyder. Aș încorpora cumva calea pentru a face referire la director? –  > Por Windstorm1981.
Shalini Baranwal

M-am lovit de aceeași problemă. După o mulțime de încercări, am ajuns să o rezolv cu soluția menționată mai jos:

Asigurați-vă că fișierul dvs. curent și anotherfile.py se află în aceeași locație a căii de sistem. să spunem că fișierul dvs. another.py și fișierul curent se află în locația : „C:/Users/ABC „În cazul în care, cineva nu este conștient de calea de sistem. Utilizați codul de mai jos în fișierul curent:

  import sys
  print(sys.path)

  import sys
  sys.path.append('/C:/Users/ABC/')

Apoi faceți codul de mai jos în același cod curent:

  from another import dosomething

Windstorm1981

Am găsit problema. Python căuta fișierele în alt director. Am setat în mod explicit directorul meu de lucru ca fiind calea către locul unde thisfile.py și anotherfile.py rezidă și funcționează. Vă mulțumesc pentru toate răspunsurile rapide.

Comentarii

  • Puteți să detaliați cum ați setat-o în mod explicit? –  > Por Pedro Reis.