py2exe 缺少模块:oauth2client.client 和 gspread 模块
py2exe missing modules: oauth2client.client and gspread modules
我使用 gspread 和 oauth2 模块创建了以下 Python 脚本
import gspread
from oauth2client.client import SignedJwtAssertionCredentials
credentials = SignedJwtAssertionCredentials("client_email","private_key", "https://spreadsheets.google.com/feeds")
gc = gspread.authorize(credentials)
spreadsheet = gc.open_by_key("spreadsheet_id")
worksheet = spreadsheet.worksheet("sheet_name")
lstoforders = worksheet.get_all_values()
...some extra code...
当我 运行 将此代码作为 .py 文件时,一切正常。但是,当我尝试使用 py2exe 将其打包成可执行 Windows 程序时,我得到以下输出
The following modules appear to be missing
['ElementC14N', 'IronPythonConsole', 'System', 'System.Windows.Forms.Clipboard', '_scproxy', 'ca_certs_locater', 'clr', 'console', 'email.FeedParser', 'email.Message', 'email.Utils', 'google.appengine.api', 'google.appengine.api.urlfetch','google3.apphosting.api', 'google3.apphosting.api.urlfetch', 'http', 'modes.editingmodes', 'oauth2client.client' 'pyreadline.keysyms.make_KeyPress', 'pyreadline.keysyms.make_KeyPress_from_keydescr', 'pyreadline.keysyms.make_keyinfo', 'pyreadline.keysyms.make_keysym', 'startup', 'urllib.parse']
因此,当我尝试 运行 生成的 exe 文件时,出现以下错误
Traceback (most recent call last):
File "gspread_to_autocomplete_json.py", line 2, in <module> ImportError: No module named oauth2client.client
py2exe 似乎找不到 gspread 和 oauth2client.client 模块。这些模块安装在我的机器上。
有人知道为什么会这样吗?
谢谢。
尼古拉
您可以在 setup.py 中选择您想要的包和模块 include.It 可能是您的安装脚本没有自动找到所有依赖项(实际上这很常见)。尝试看看 .
为您的 setup.py 添加选项
您还可以使用 more py2exe options 以便导入项目所需的所有模块和包。例如
# setup.py
from distutils.core import setup
import py2exe
setup(console=["script.py"],
options={
"py2exe":{
"optimize": 2,
"includes": ["mf1.py", "mf2.py", "mf3.py"], # List of all the modules you want to import
"packages": ["package1"] # List of the package you want to make sure that will be imported
}
}
)
通过这种方式,您可以强制导入您的项目缺少的脚本
我使用 gspread 和 oauth2 模块创建了以下 Python 脚本
import gspread
from oauth2client.client import SignedJwtAssertionCredentials
credentials = SignedJwtAssertionCredentials("client_email","private_key", "https://spreadsheets.google.com/feeds")
gc = gspread.authorize(credentials)
spreadsheet = gc.open_by_key("spreadsheet_id")
worksheet = spreadsheet.worksheet("sheet_name")
lstoforders = worksheet.get_all_values()
...some extra code...
当我 运行 将此代码作为 .py 文件时,一切正常。但是,当我尝试使用 py2exe 将其打包成可执行 Windows 程序时,我得到以下输出
The following modules appear to be missing
['ElementC14N', 'IronPythonConsole', 'System', 'System.Windows.Forms.Clipboard', '_scproxy', 'ca_certs_locater', 'clr', 'console', 'email.FeedParser', 'email.Message', 'email.Utils', 'google.appengine.api', 'google.appengine.api.urlfetch','google3.apphosting.api', 'google3.apphosting.api.urlfetch', 'http', 'modes.editingmodes', 'oauth2client.client' 'pyreadline.keysyms.make_KeyPress', 'pyreadline.keysyms.make_KeyPress_from_keydescr', 'pyreadline.keysyms.make_keyinfo', 'pyreadline.keysyms.make_keysym', 'startup', 'urllib.parse']
因此,当我尝试 运行 生成的 exe 文件时,出现以下错误
Traceback (most recent call last):
File "gspread_to_autocomplete_json.py", line 2, in <module> ImportError: No module named oauth2client.client
py2exe 似乎找不到 gspread 和 oauth2client.client 模块。这些模块安装在我的机器上。
有人知道为什么会这样吗?
谢谢。
尼古拉
您可以在 setup.py 中选择您想要的包和模块 include.It 可能是您的安装脚本没有自动找到所有依赖项(实际上这很常见)。尝试看看
为您的 setup.py 添加选项
您还可以使用 more py2exe options 以便导入项目所需的所有模块和包。例如
# setup.py
from distutils.core import setup
import py2exe
setup(console=["script.py"],
options={
"py2exe":{
"optimize": 2,
"includes": ["mf1.py", "mf2.py", "mf3.py"], # List of all the modules you want to import
"packages": ["package1"] # List of the package you want to make sure that will be imported
}
}
)
通过这种方式,您可以强制导入您的项目缺少的脚本