2017-09-14 10 views
0

私は2つの同じディレクトリ(C:\\Users\\user1\\general)にあるpythonスクリプトを持っています。 2番目のスクリプトから1つのスクリプトで関数を実行したいので、script1script2にインポートしようとしています。ここに私のscript2です:python import別のpythonスクリプトが動作しない

import sys 
sys.path.insert(0, 'C:\\Users\\user1\\general') 
import script1 
from flask import Flask 
from flask_socketio import SocketIO, send 


app = Flask(__name__) 
app.config['SECRET_KEY'] = 'mysecret' 
socketio = SocketIO(app) 

@socketio.on('message') 
def handleMessage(msg): 
    print('Message: ' + msg) 
    # script1 has function called api_call(id,message) 
    messsage = api_call('user1', msg) 
    send(messsage, broadcast=True) 

if __name__ == '__main__': 
    socketio.run(app) 

ここに私のscript1です:

import sys 

def api_call(Id,message): 
    # Code processing 


if __name__ == '__main__': 

    uId = sys.argv[0] 
    message = sys.argv[1] 
    api_call(userId,message) 

私はscript2の上に実行すると、私はNameError: name 'api_call' is not definedを取得します。どういうわけかscript1がインポートされていないように見えて、関数が通過していないようです。

:以前の私は、その後もsys.path.insert()と同じ結果を使用せずにしようとしました。

+1

を使用して、あなたはSCRIPT1インポート* 'から'てみたのですか? – saniales

+2

'' script2'の 'api_call'を' script1.api_call'に変更しましたか? – FamousJameous

+2

@sanialesそれは非常に悪い習慣です。 –

答えて

3

試してみてくださいfrom script1 import api_call:これにより、script1モジュールapi_callの機能をインポートできます。

-1

のPython 2

同じフォルダに__init__.pyを作成します。

インポート次のコマンドを使用して

from script1 import api_call


Pythonの3

インポートし、次のコマンドを

from .script1 import api_call

+1

この構文( 'from .module import ...')は、サブモジュールからの相対インポートを指します。パッケージ**内で**使用する必要があり、適切な解決策ではありません。 '__init __。py'と同じことですが、このファイルを含むレパートリーはパッケージとして認識されますが、これは必要ではなく、ここでは望ましくないかもしれません。 – FabienP

関連する問題