【发布时间】:2019-07-25 22:11:33
【问题描述】:
我正在尝试从使用 pysftp 的 python 脚本编译可执行文件。我正在使用 cx_Freeze 来做到这一点。
这是我的代码:
Test.py
import datetime
import time
import os
import pysftp
i = 0
while(i<10):
tm = datetime.datetime.now()
print (tm.strftime('%H:%M:%S'))
time.sleep(1)
i += 1
设置如下:
setup.py
from cx_Freeze import setup, Executable
base = None
executables = [Executable("Test.py", base=base)]
packages = ["idna", "datetime", "time", "os", "pysftp"]
options = {
'build_exe': {
'packages':packages,
},
}
setup(
name = "<any name>",
options = options,
version = "<any number>",
description = '<any description>',
executables = executables
)
当我从命令行运行test.py 时,它工作正常。但是当我运行运行命令python setup.py build 后构建的exe 时,test.exe 失败并显示如下:
C:\Users\cb\Desktop\Python Scripts\Test cx_Freeze install\build\exe.win-amd64-3.7>Test.exe
Traceback (most recent call last):
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
module.run()
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\cx_Freeze\initscripts\Console.py", line 23, in run
exec(code, {'__name__': '__main__'})
File "Test.py", line 4, in <module>
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\pysftp\__init__.py", line 12, in <module>
import paramiko
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\paramiko\__init__.py", line 22, in <module>
from paramiko.transport import SecurityOptions, Transport
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\paramiko\transport.py", line 90, in <module>
from paramiko.ed25519key import Ed25519Key
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\paramiko\ed25519key.py", line 17, in <module>
import bcrypt
File "C:\Users\cb\AppData\Local\Programs\Python\Python37\lib\site-packages\bcrypt\__init__.py", line 25, in <module>
from . import _bcrypt
ModuleNotFoundError: No module named '_cffi_backend'
关于我应该尝试什么的任何建议?
我已经尝试将"cryptography" 和"paramiko" 添加到包列表中。我在网上查看过,发现我可能必须明确说明我用于 cx_Freeze 的库,但我不确定那是什么。
我正在使用 python 3.7.3-64bit 和 windows 10。
【问题讨论】:
标签: python-3.x cx-freeze pysftp