cx_Freeze - appdirs 包是必需的
Posted
技术标签:
【中文标题】cx_Freeze - appdirs 包是必需的【英文标题】:cx_Freeze - The appdirs package is required 【发布时间】:2017-02-17 11:32:39 【问题描述】:我正在尝试将 .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")
如何解决这个错误?
【问题讨论】:
你能分享你试图冻结的 Python 脚本吗? 我现在将源代码添加到我的问题中。 【参考方案1】:我遇到了同样的问题.. 在 setup.py 文件中添加 options 参数,如下所示:
setup (name="MyAPP",
version="0.1",
description = "My GUI application!",
options = 'build_exe': 'packages':packages,
.
.
.)
在packages put下(packages应该在setup之前):
packages = ['pkg_resources._vendor']
(如果你有类似的问题,你可以添加更多包..)
您可以在此处阅读有关选项的更多信息:http://cx-freeze.readthedocs.io/en/latest/distutils.html#build-exe
这为我解决了问题!
【讨论】:
【参考方案2】:我遇到了同样的问题。 只需将包添加到选项中
additional_mods = ['appdirs', 'packaging.version']
additional_packages = ['scipy', 'numpy', 'appdirs', 'packaging']
options =
'build_exe':
'packages': additional_packages,
'includes': additional_mods,
【讨论】:
【参考方案3】:尝试升级到 setuptools 34.4.1,这对我有用
【讨论】:
这对我来说不适用于 linux 上的 python 3.6.1,setuptools 不依赖于 appdirs。 cx_freeze 也不会将 appdirs 安装为 pip3 的依赖项。以上是关于cx_Freeze - appdirs 包是必需的的主要内容,如果未能解决你的问题,请参考以下文章
必需参数 $path 遵循可选参数 $handlers paypal sdk [重复]