2014-09-23 15 views
16

Próbuję zaimportować plik Pythona do mojej aplikacji, który jest napisany w python.Python/ImportError: Importowanie według nazw plików nie jest obsługiwane

Mam następujący kod:

import os 
from os.path import basename 

class specificClass: 
    def dothing(self,path): 
      runcommand = __import__("/root/"+ os.path.splitext(os.path.basename(path))[0]+ "/" + os.path.splitext(os.path.basename(path))[0] +"/sa/update.py") 
      runcommand.main() 

Kiedy go uruchomić, to daje mi następujący błąd:

ImportError: Import by filename is not supported. 
+0

Ten błąd jest również zgłaszany podczas próby dodania trasy do piramidy i nie umieszczasz normalnej ścieżki trasy jako drugiej pary metr. Przykład: config.add_route ("admin_ajax_get_items", "admin_ajax_get_items") zamiast config.add_route ('admin_ajax_get_items', '/ url/path') –

Odpowiedz

14

Zamiast robi import jak __import__ można powiedzieć

import sys 
sys.path.append(path) # this is where your python file exists 
import update 
+0

oznacza to, że jestem zmuszony dodać do ścieżki folder, w którym działa ten pakiet Chcę uruchomić znajdują się w? Powiedzmy, że istnieje jedna funkcja, którą chcę uruchomić w '..', czy istnieje sposób na zaimportowanie tej funkcji w ** dowolny sposób? – Pinocchio

+2

Nie odpowiada na pytanie i ogólnie promuje wyjątkowo złą praktykę modyfikowania ścieżki systemowej w modułach Pythona. –

+5

Jaki jest prawidłowy sposób robienia tego? – Sajuuk

Powiązane problemy