問題:
「import paramiko」という行が含まれる python ファイル ( forge.py )と、paramiko モジュールの関数を使用する関数process()があります。「import paramiko」行は、 forge.pyファイル内の別のサブルーチンによって呼び出された場合は正常に機能しますが、別のファイル ( main.py ) から呼び出された場合はエラーをスローします。
問題を再現する手順は何ですか?
1 Raspbian OS、python3.8 インタープリターで PyCharm を実行しています。
期待される結果は何ですか?
関数をテストするforge.pyファイルでmain()関数を実行すると、 paramikoが正常に読み込まれ、 paramikoへのprocess()関数呼び出し(以下を参照) が期待どおりに機能します。
代わりに何が起こりますか?
import ... from ...参照を使用して含まれているforge.py のprocess ()も呼び出す別のファイル ( main.py ) があります。しかし、main.pyのコードが呼び出しを行うと、呼び出しは失敗し、次のエラーが報告されます。
ModuleNotFoundError:No module named 'paramiko'.
そして、このトレースバック:
in process()
Traceback (most recent call last):
File "/home/pi/PycharmProjects/sonascan-pi/src/client/main.py", line 313, in <module>
main()
File "/home/pi/PycharmProjects/sonascan-pi/src/client/main.py", line 277, in main
do_a_loop()
File "/home/pi/PycharmProjects/sonascan-pi/src/client/main.py", line 219, in do_a_loop
result = process()
File "/home/pi/PycharmProjects/sonascan-pi/src/client/forge.py", line 225, in process
import paramiko
ModuleNotFoundError: No module named 'paramiko'
main.pyからの関連コードの抜粋を次に示します。
# in file main.py
from forge import process
def do_a_loop():
result = process()
return
def main():
do_a_loop()
return
if __name__ == '__main__':
main()
forge.py の関連部分は次のとおりです。
# in forge.py
def process()
print("in process")
...
import paramiko
private_key = paramiko.RSAKey.from_private_key_file(pem_key)
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
....
def main()
result = process()
if __name__ == '__main__':
main()