我正在尝试将.py脚本转换为.exe
cx_Freeze成功编译了exe。但是,当我运行exe文件时,它会抛出此错误:
ImportError:' appdirs'包装是必需的;通常这与此软件包捆绑在一起,因此如果您收到此警告,请咨询您的发行版的打包者
这是我的setup.py
from cx_Freeze import setup, Executable
setup(
name = "dbx_sharelink" ,
version = "0.1" ,
description = " " ,
executables = [Executable("dbx_sharelink.py")] ,
)
源代码Python脚本
import sys
import dropbox
import pandas as pd
import sys
import os
dbx = dropbox.Dropbox('xxxxxxxxxxxxxxxxx')
def getSharedLink(full_path):
try:
link = dbx.sharing_create_shared_link(full_path).url
except dropbox.exceptions.ApiError as err:
print('*** API error', err)
return None
return link
print(sys.argv[1])
link = getSharedLink("/A_DATA/data")
df = pd.DataFrame([{'link':link}])
df.to_clipboard(index=False,header=False)
os.system("pause")
如何解决此错误?
答案 0 :(得分:7)
我遇到了同样的问题.. 将选项参数添加到setup.py文件中,如下所示:
setup (name="MyAPP",
version="0.1",
description = "My GUI application!",
options = {'build_exe': {'packages':packages}},
.
.
.)
在软件包放置下(软件包应该在安装之前):
packages = ['pkg_resources._vendor']
(如果您遇到类似这样的问题,可以添加更多包。)
您可以在此处阅读有关选项的更多信息:http://cx-freeze.readthedocs.io/en/latest/distutils.html#build-exe
这解决了我的问题!
答案 1 :(得分:2)
我有同样的问题。 只需将软件包添加到选项中即可
additional_mods = ['appdirs', 'packaging.version']
additional_packages = ['scipy', 'numpy', 'appdirs', 'packaging']
options = {
'build_exe': {
'packages': additional_packages,
'includes': additional_mods,
}
答案 2 :(得分:0)
尝试升级到setuptools 34.4.1,这对我有用