2
$ bin/python src/app/utils/loader.py newTasks checkForStuff
Traceback (most recent call last):
File "bin/python", line 135, in <module>
execfile(__file__)
File "src/app/utils/loader.py", line 154, in <module>
module = __import__(args.module)
ImportError: No module named newTasks
從以下loader.py:的Python導入錯誤
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Runs python')
parser.add_argument('module', metavar='module', help="the target module")
args = parser.parse_args()
module = __import__(args.module)
newTasks.py是在相同的目錄中loader.py。它在我的開發箱上工作,我做了一個svn導出到分段,併發生上述情況。任何指針?
只有我能解決的材料差異是這次我用完了virtualenv。
編輯: 我命令行改爲:
$ bin/python src/app/utils/loader.py utils.newTasks checkForStuff
和模塊發現確定。但我的下一個命令是調用的模塊功能checkForStuff
之一:
parser.add_argument('func',metavar='function', help="the target function name")
...
func_param = getattr(module,args.func)
,現在無法找到函數?
Traceback (most recent call last):
File "bin/python", line 135, in <module>
execfile(__file__)
File "src/app/utils/loader.py", line 156, in <module>
func_param = getattr(module,args.func)
AttributeError: 'module' object has no attribute 'checkForStuff'
如果我走進斌/ Python的:
>>> import utils.newTasks as nt
>>> nt.checkForStuff
<function checkForStuff at 0x29b2f50>
這是煩人!
我以爲你是對的,但我通過for循環搜索sys.path列表時犯了一個錯誤。 src/app目錄在路徑中,所以應該選擇utils.newTasks模塊。還請注意我的編輯以上 - 我的機器之間的差異是,我在virtualenv下運行這個。 – user1561108
@ user1561108:loader.py位於src/app/utils目錄中,不在src/app目錄中。 utils.newTasks和newTasks是不同的名稱(它是Python中的'__main__',它可以使用不同的名稱導入相同的模塊)。使用普通的python newTasks將成功導入給定的命令行。儘管你應該提供全名來避免陷阱。 – jfs
看到我的更新。如果我限定了模塊的名稱,但不包含屬於它的功能! – user1561108