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

を取得している理由は正確にはわかりませんTypeError(おそらく、表示されているものよりも多くのことがあります) が、 から関数にアクセスする場合はanother_file、次のようにする必要があります。

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

いわゆるワイルドインポートを使用してそれを行うことができます:

from other_file import *

そうすれば、そのファイル内のすべてのオブジェクトと関数にアクセスできます。もちろん、あなたが定義した

__all__ 

エクスポートできるものを制限するリスト。

例:

#some_file.py

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

今ワイルドインポートで:

from some_file import *

「a」しか見えない

于 2013-11-01T13:06:36.753 に答える