Python 3.x 使python在Windows和Mac上都可执行(具有依赖项)
我想与不知道python是什么的人分享我的python脚本。这就是为什么我想让它成为一个可执行文件(最好是Mac和Windows,但Windows是优先考虑的) 我尝试使用pyinstaller和cx_freeze,但它们实际上没有导入运行oauth2所需的json文件 运行Python 3.x 使python在Windows和Mac上都可执行(具有依赖项),python-3.x,Python 3.x,我想与不知道python是什么的人分享我的python脚本。这就是为什么我想让它成为一个可执行文件(最好是Mac和Windows,但Windows是优先考虑的) 我尝试使用pyinstaller和cx_freeze,但它们实际上没有导入运行oauth2所需的json文件 运行.exe时得到的回溯是: 回溯(最后一次调用):文件“MyScrip.py”,第9行,在文件“site packages\oauth2client\service\u account.py”,第219行,在from\u js
.exe
时得到的回溯是:
回溯(最后一次调用):文件“MyScrip.py”,第9行,在文件“site packages\oauth2client\service\u account.py”,第219行,在from\u json\u keyfile\u name FileNotFoundError:[Errno 2]没有这样的文件或目录:“creds.json”[11208]无法执行脚本MyScript
有人知道怎么做吗?我试着用谷歌搜索并寻找解决方案,但我迷路了
谢谢 将我的评论答案作为答案重新发布 您的
exe
很难找到json文件的原因是使用了相对路径而不是绝对路径。当使用pyinstaller
编译exe
时,它将被放置在单独的文件夹中,并且不会复制任何文件依赖项
“快速”解决方案是将json
移动到与.exe
相同的目录中,但如果您经常编译,这可能会很麻烦,因为您每次都必须记住它
无需每次都记住,您可以编写一个.bat
文件,该文件使用pyinstaller
完全编译您的程序,并将所有依赖项移动到与.exe
相同的目录中。每个操作系统的语法都有点不同
Windows上的脚本可能如下所示:
pyinstaller MyScript.py # add any pyinstaller options you need
xcopy creds.json dist\main\creds.json
当构建变得更加复杂时,自动化的“构建”脚本无疑是有益的
pyinstaller
确实有效。因此,您的代码中可能有一些古怪的东西。你能试着把你的问题归结为一个最小的可重复的例子,让我们在stackoverflow上知道发生了什么吗?是的,它确实编译了所有的东西,但是每当我运行.exe时都会显示这个错误,正如我所说的,它似乎没有导入.json文件回溯(最近的调用最后一次):文件“MyScrip.py”,第9行,在文件中“site packages\oauth2client\service\u account.py”,第219行,from_json\u keyfile\u name FileNotFoundError:[Errno 2]没有这样的文件或目录:“creds.json”[11208]无法执行脚本MyScript
,当您运行.py
文件时,它不会抛出该错误?我会冒昧猜测您正在使用creds.json
的相对路径。您是否可以使用绝对路径?相对于.exe
的creds.json
在哪里?@SyntaxVoidsupportsMonica,它在roo中MyScript.py所在的t文件夹。对于第9行中的代码:credentials=ServiceAccountCredentials.from_json_keyfile_name('creds.json',scope)
如果您只传递路径creds.json
,则.exe
将只查找包含它的目录。您是否可以复制/移动creds.json
,使其与exe位于同一文件夹中,然后重试?