Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使python在Windows和Mac上都可执行(具有依赖项)_Python 3.x - Fatal编程技术网

Python 3.x 使python在Windows和Mac上都可执行(具有依赖项)

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

我想与不知道python是什么的人分享我的python脚本。这就是为什么我想让它成为一个可执行文件(最好是Mac和Windows,但Windows是优先考虑的)

我尝试使用pyinstaller和cx_freeze,但它们实际上没有导入运行oauth2所需的json文件

运行
.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位于同一文件夹中,然后重试?