2014-09-23 28 views
16

我試圖導入一個python文件到我用python編寫的應用程序中。Python/ImportError:不支持按文件名導入

我有以下代碼:

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() 

當我運行它,它給了我下面的錯誤:

ImportError: Import by filename is not supported. 
+0

嘗試在金字塔中添加路線時也會出現此錯誤,並且您沒有將正常路線路徑作爲第2段儀表。 例如:config.add_route('admin_ajax_get_items','admin_ajax_get_items')而不是config.add_route('admin_ajax_get_items','/ url/path') – 2015-11-13 14:48:08

回答

14

而不是做這樣__import__一個進口可以說

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

這是否意味着我不得不將路徑添加到包所在的文件夾中我想運行的位於? 假設我想在'..'中運行一個函數,有沒有辦法以**任何**方式導入該函數? – Pinocchio 2016-06-22 06:39:07

+2

實際上並沒有回答這個問題,並且通常會促進在python模塊中修改系統路徑的非常糟糕的做法。 – 2017-04-13 16:41:14

+5

這樣做的正確方法是什麼? – Sajuuk 2017-08-09 06:28:17