1

我是 python 新手,所以这可能是我刚刚错过的东西......我只是想运行一个调用另一个文件的文件。

我有一个类似 myfile.py 的文件:

#!/usr/bin/python

import another_file

things = ... """ some code """

def mystuff(text, th=things):
    return another_def(text, th)

' another_file' 可以自行编译/运行良好,并具有 def ' another_def' 和变量 ' th' (这些只是示例名称......)

所以我从命令行运行python,然后尝试:

>>> import myfile
>>> t = myfile.mystuff('some text')

我得到了错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "myfile.py", line 18, in mystuff
    return another_def(text, th)
TypeError: 'module' object is not callable

import another_file即使它在里面,我也试过了,myfile.py但这似乎没有任何区别。

如果有什么不同,我试过:

print myfile
<module 'myfile' from 'myfile.py'>
print myfile.mystuff
<function mystuff at 0x7fcf178d0320>

所以我假设如果它可以找到文件和函数,问题是它如何尝试调用另一个文件......也许。任何帮助表示赞赏!

4

2 回答 2

3

我不确定你为什么会得到 a TypeError(它可能比你展示的更多),但如果你想从 访问函数another_file,那么你应该这样做:

return another_file.another_def(text, th)
于 2013-11-01T12:50:08.073 回答
1

您可以使用所谓的野生导入来做到这一点:

从 other_file 导入 *

这样您就可以访问该文件中的所有对象和函数。当然,除非你已经定义了

__all__ 

列表限制可以导出的内容。

例子:

#some_file.py

a = 3; b = 4 
__all__ = ['a']

现在有了野生进口:

from some_file import *

你只看到'a'

于 2013-11-01T13:06:36.753 回答