2013-06-16 14 views
12

मैं eval() फ़ंक्शन का उपयोग कर मॉड्यूल आयात नहीं कर सकता।मॉड्यूल आयात करने के लिए eval

तो, मेरे पास एक ऐसा कार्य है जहां मैं import vfs_tests as v करता हूं, यह काम करता है। हालांकि, eval() जैसे eval('import vfs_tests as v') का उपयोग करके एक ही आयात एक वाक्यविन्यास त्रुटि फेंकता है।

ऐसा क्यों है?

उत्तर

26

उपयोग exec: केवल भाव पर

exec 'import vfs_tests as v' 

eval काम करता है, import एक बयान है।

exec अजगर 3 में एक समारोह है: exec('import vfs_tests as v')

एक स्ट्रिंग का उपयोग कर एक मॉड्यूल आयात आप importlib मॉड्यूल का उपयोग करना चाहिए करने के लिए:

import importlib 
mod = importlib.import_module('vfs_tests') 

अजगर 2.6 में और पहले __import__ का उपयोग करें।

+4

चेतावनी का एक शब्द: exec बहुत शक्तिशाली है। यदि आपके द्वारा निष्पादित स्ट्रिंग का हिस्सा अविश्वसनीय स्रोत से आता है, तो निष्पादन भी बेहद खतरनाक है। –

+0

py <= 2.6 के लिए __import__ के साथ, ध्यान दें कि यह नियमित आयात की तरह परिभाषित नाम को परिभाषित नहीं करता है। – TextGeek

संबंधित मुद्दे