问题:
我有一个 python 文件(forge.py),其中有一行“import paramiko”,以及一个使用 paramiko 模块中的函数的函数process()。当被forge.py文件中的另一个子例程调用时, “import paramiko”行可以正常工作,但在从不同文件 ( main.py )调用时会引发错误。
哪些步骤将重现该问题?
1 在 Raspbian 操作系统上运行 PyCharm,python3.8 解释器。
预期的结果是什么?
当我在测试函数的forge.py文件中运行main()函数时,它会很好地加载paramiko,并且对 paramiko 的process ()函数调用(如下所示)按预期工作。
相反会发生什么?
我有另一个文件(main.py ),它也在forge.py中调用process(),它是使用import ... from ...引用包含的。但是当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()