新手求问,手头只有一台 m 芯片的 Mac,如何把一个非常简短的 Python 脚本做成一个可以在 x86_64 win10 上运行的可执行文件?

2023-07-14 18:50:35 +08:00
 fulei

新手求问,手头只有 M 芯片的 Mac 电脑,装虚拟机也只能装 arm win,我写了一个非常简单的 python 脚本,想把它放在公司的不联网的 x86_64 win10 上使用,最简单的方法是什么? 麻烦有时间的大佬们说详细一点,谢谢

5319 次点击
所在节点    Python
81 条回复
mariahlamb31
2023-07-15 07:27:31 +08:00
可以使用 PyInstaller 、cx_Freeze 等工具将脚本打包成跨平台可执行文件,然后在 Mac 上生成适用于 win10 的可执行版本。

在 Mac 上通过虚拟机软件(VirtualBox 、VMware 等)或用 Docker 创建 win10 虚拟环境,在其中运行 Python 脚本。

将 Python 脚本部署到公有云服务商(AWS 、Azure 、GCP 等)提供的 win10 云主机实例上运行。
minamike
2023-07-15 08:05:36 +08:00
为什么不问问神奇的 ChatGPT 呢
sunrisewestern
2023-07-15 08:14:06 +08:00
你如果有调用包的话,就算几行的 python 脚本打包完也有几百 MB
xuc
2023-07-15 08:38:56 +08:00
@fulei 别 dd 了,阿里的无影云可以免费试用,开通就是 Windows
m1klos
2023-07-15 08:59:03 +08:00
借一台 Windows 或者去网吧或者瞅瞅有没有免费试用的云电脑
charlieethan
2023-07-15 09:09:24 +08:00
这还不容易,用 GitHub CI ,运行环境使用 windows-2022 ,用 pyinstaller 命令行打包即可
iOCZ
2023-07-15 09:21:45 +08:00
用 git workflow 打包成 exe
tairan2006
2023-07-15 10:03:37 +08:00
@fulei #18 把 Python 脚本贴给 chatgpt ,让它翻译成 go ,然后`CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go` 交叉编译成 windows 的 exe 。
iorilu
2023-07-15 10:17:46 +08:00
要么花钱找人编译下

要么下载个 python 到那个 win 上装下, 把代码拷过去
ctro15547
2023-07-15 10:26:27 +08:00
有没有可能 云一台桌面电脑打包一个 exe , 按时计费的那种才几块钱一小时 足够打包了
rming
2023-07-15 10:27:37 +08:00
1. 学习 rust 或者 go 2. 重写这段代码
hefish
2023-07-15 10:33:52 +08:00
买一台 x86 的电脑嘛。
用完再卖掉。

能用钱解决的事儿,都不叫事儿。
GeruzoniAnsasu
2023-07-15 10:37:33 +08:00
重保是吧
我干过类似的,而且我的 python 脚本更长,200 行左右


最后的解决方法是想办法让单位内部装上了 py 和 vscode ,然后把我手机放旁边对着抄了一遍。


当然了,我是纯内建库实现的,别想着用第三方包,那是给自己挖坑。
如果有界面或可视化需求,那就想办法渲染一个 html 出来,http 服务用内建库也完全够写了。
我当初差点还要手撸 html parser ,不过后来想想反正我要扒的目标网页也就那么一两个,于是用更 hard coded 的方式糊过去了
Hopetree
2023-07-15 10:52:15 +08:00
用 pyinstaller 打包,在什么平台打出来的包就可以在什么平台运行,所以你找个 x86_64 的平台打包就行
brookegas
2023-07-15 13:05:34 +08:00
#36 楼 是终极答案

1 、将 python 代码自动转成 Go 代码
2 、使用 Go 的交叉编译,直接输出 windows 版本的 exe 文件
ch2
2023-07-15 13:44:03 +08:00
github action 编译
Lychee0
2023-07-15 14:51:27 +08:00
丢 GitHub Action 拿 Pyinstaller 打包下就好,看 OP 描述应该不会有什么大坑。给个示例:

```
name: CI

# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "main" ]
paths-ignore:
- '**.md'
- 'LICENSE'

pull_request:
branches: [ "main" ]
paths-ignore:
- '**.md'
- 'LICENSE'

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
CI:
strategy:
matrix:
python-version: [ "3.10" ]
os-version: [ "macos-latest", "windows-latest", "ubuntu-20.04" ]

runs-on: ${{ matrix.os-version }}
steps:
- uses: actions/checkout@v3
with:
submodules: recursive

- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: x64

- name: Build
run: |
pip install -r requirements.txt
pip install pyinstaller
python -m PyInstaller -F -n PKGName -i __main__.py

- name: upload
uses: actions/upload-artifact@v3
with:
name: PKGName-${{ matrix.os-version }}
path: dist
```
Lychee0
2023-07-15 14:53:03 +08:00
缩进被吞了 hhh 按 yaml 和 action 要求改下吧
loveuer
2023-07-16 21:45:52 +08:00
@aptx4689 我最近正好遇到这个问题了,ps1 脚本在 win11 上默认不能通过左键或者右键点击运行了,需要提前开启允许运行才行,这对小白来说有点不太现实。考虑换 tinygo 生成 exe ,但是不能动态生成就没找到更好的方案
JustBecause
2023-07-16 22:21:59 +08:00
某鱼上随便找个人帮你编译一下得了,不到百行代码编译一下,五块钱肯定有人愿意做

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/956844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX