新手求问,手头只有 M 芯片的 Mac 电脑,装虚拟机也只能装 arm win,我写了一个非常简单的 python 脚本,想把它放在公司的不联网的 x86_64 win10 上使用,最简单的方法是什么? 麻烦有时间的大佬们说详细一点,谢谢
1
musi 293 天前 via iPhone
下 x86 的 Python 然后一起打成一个压缩包,写个 bat 解压执行
|
2
sadfQED2 293 天前 via Android
?????
python 脚本跟你 cpu 又没有半毛钱关系,你 win 电脑装个 python 解释器不就能运行了 |
5
aptx4689 293 天前 1
装 powershell ,把 python 用 powershell 重写一遍
|
6
fulei OP @aptx4689 请问 powershell 是 win 10 自带的吗?我 python 用到的 chardet tqdm 这些库,在不能联网的公司电脑上,也没法下载
|
7
baobao1270 293 天前
pyinstaller 打包试试?
|
8
harrozze 293 天前
|
9
sadfQED2 293 天前 via Android
|
10
harrozze 293 天前
https://towardsdatascience.com/how-to-use-manage-multiple-python-versions-on-an-apple-silicon-m1-mac-d69ee6ed0250
这篇里说的可能能解决你的问题,如何在 m 芯片的 mac 里运行 x86 程序 |
11
fulei OP @baobao1270 我上网搜索方法的时候见过这个,我理解的意思是,在 Mac 能打包 Mac 平台能用的,Linux 能打包 Linux 能用的,我要想在 win 上用,需要在 win 上装 pyinstaller ?但是我没有 win 电脑。
|
15
houshuu 293 天前
简短的话, 建议用 go 或者别的支持交叉编译的语言重写, 对于非联网设备, 一劳永逸
|
16
ysc3839 293 天前 via Android
直接安装一个 Python 不就能运行了吗?
|
17
cnbatch 293 天前 via Android
没错,Win10 自带 PowerShell 。其实 Win7 开始就自带了。
|
18
fulei OP @houshuu 非常短,83 行。我完全不懂 go, 请问用 go 写的东西,可以在 m 芯片 Mac 上编译出 x86_64 win10 可用的可执行文件吗?可以的话,我去学习下
|
20
richarddingcn 293 天前
啊?是我有问题还是咋的
都非常简单的 python script 了 是用到什么不能跨平台的依赖了么 直接 win 上装个 python 直接运行 .py 文件不就行了 |
22
fulei OP @cnbatch PowerShell 是写 bat 脚本的吗?不引用外部的库是不是实现不了啊,我有用 pip install chardet tqdm 这两个东西
|
23
ClericPy 293 天前
下个绿色版 python 解释器, 然后用 zipapps 或 shiv 打包个 pyz. 到机器上用解释器运行 pyz 就行了. pyz 里带了依赖和原代码包
但是如果依赖里有 .pyd/.so 之类的, 以及 C-lib 之类的, 就麻烦一些, 去 pypi.org 下载 whl 到目标机器安装 |
25
JensenQian 293 天前 1
楼下网吧
付费开发 效率提高 岂不美哉 |
26
suarezding 293 天前
@fulei 类似的单位,我来回答一下吧,应该是在本地 m 芯片电脑上开发了一个 python 脚本,需要在内网 x86 win10 上离线运行吧?
我个人的话,也建议代码行数不多的情况下,使用 Go 重构,参考这个代码量,应该不复杂,使用系统库能完成,功能也比较简单,Go 也很容易上手.可以在 m 芯片上交叉编译出目标电脑上的 exe 程序. |
28
elechi 293 天前
虚拟机装个 windows ,arm 版的也行;调试通过之后放到目标机上用就行
|
29
louzhichen 293 天前
找一个大神,让他用一块磁铁直接操作硬盘,写出 python 解释器,然后你就可以用了。
|
30
liantian 293 天前 5
准备工作,下载 windows embeddable 版本的 python ,3.8 以后的版本官网都有。
1. 在 mac 上,pip freeze > requirements.txt 导出依赖 2. 在 mac 上,pip download --platform win64 -r requirements 。txt 下载 windows 版本的依赖。 3. 下载 pip ,https://bootstrap.pypa.io/get-pip.py 将上述文件拷贝到 windows ,方法你随意。 解压 windows embeddable 版本的 python 修改掉 pth 文件。取消注释 import site 然后 python.exe get-pip.py 安装 pip 然后 python.exe -m pip install -r requirements 。txt --no-index --find-links D:/下载/的/依赖/的/路径 完事 |
31
cnbatch 293 天前 via Android
既然你自己就有 Arm Windows 虚拟机,打开看一下不就知道了。
PowerShell 和 bat 是两回事。 PowerShell 除了 PS 自带命令,还可以调用 .net 类库,就是麻烦点。 bat 无法调用 .net 类库,它就是个 cmd 的脚本而已。 |
32
aisk 293 天前
用 nuitka 编译成二进制试试
|
33
xuc 293 天前 via Android
Mac 能联网对吧,开台云电脑(比如腾讯轻量云、阿里无影云桌面,都有新手优惠)
|
35
xuc 293 天前 via Android
没说完,开台 Windows 系统的云电脑,然后你就可以打包成需要的 exe 文件了,打包方法相信你也已经查过了
|
36
misaka00001 293 天前 via Android
|
37
fulei OP @liantian 感谢 “修改掉 pth 文件。取消注释 import site“ 这个我不太理解,我网上搜了下,指的是 Windows embeddable 版本的 Python 目录中 sitecustomize.py 这个文件吧。我上班用这个方法尝试下。
|
39
fulei OP @misaka00001 请问我在左边黏贴了 python 代码后,点击 convert button ,得到右边转换的代码,我应该怎么用?有时间的话请给我多少两句,需要下载什么,需要做什么,我去搜索学学。感谢
|
41
18601294989 293 天前
chatgpt 把 python 转成 golang
|
42
dianso 293 天前
闲鱼找人,最多 100 块钱就弄好了
|
44
mm163 293 天前
arm win 不是直接能运行 amd64/x86 吗?
在 arm win 下用 x86_64 版本的 Python 工具开发和打包转 exe 不就得了。 |
45
harrozze 293 天前
@fulei #39 右边的代码 copy 出来,在你 mac 上装个 go ( https://go.dev),然后用 go 交叉编译成 x86_64 windows 的程序
`GOOS=windows GOARCH=amd64 go build -o bin/app-amd64.exe app.go` |
48
dcsuibian 293 天前 via Android
楼主应该是想分发.exe 文件,而不是分发 python 源代码
|
49
fulei OP @dcsuibian 分发是什么意思,我不是行业内的,太专业的我搞不懂。我有一项工作内容是从系统里导出一个压缩包,解压后是将近 2 百个 csv 文件,每个 csv 文件里有 1 万行。然后拿这些数据进行下一步。但是它文件个数太多了,鼠标点半天,我就想把那些近 200 个文件每 70 个合并成一个文件,这样我的工作量就会减少很多。
|
53
aptx4689 293 天前
而且 powershell 也有 mac 版本,可以供你测试
|
54
zx945 293 天前 via iPhone
借一个别人的 windows 电脑安装 Python 环境,然后用 pyinstaller 打包成 exe 拷到目标电脑上,不过打包出来的 exe 最小也得 10MB 以上了,不知道所谓的只能上传小文件是有多小
|
55
zx945 293 天前 via iPhone
或者换一个思路,联系公司 IT 申请在内部系统上配置好 python 环境以及自己这个脚本需要的包,这样貌似更合规一些
|
56
fox0001 293 天前 via Android
类似的需求,我会用 go 去写。Linux 下,go 源码可以编译成对应各个主流系统平台的可执行文件。
|
57
zx945 293 天前 via iPhone
|
58
ryd994 293 天前 via Android
运维 Windows 电脑非要用 MacOS ,这不是给自己找麻烦吗?
让公司配台 Windows 电脑或者楼上说的,远程桌面 如果你非要用 MacOS ,那我尊重你的命运 |
59
95276 293 天前 via iPhone
用 go 写,交叉编译是最方便的。
|
60
bef0rewind 292 天前
建议你走涉密流程,安全无小事。
|
61
mariahlamb31 292 天前
可以使用 PyInstaller 、cx_Freeze 等工具将脚本打包成跨平台可执行文件,然后在 Mac 上生成适用于 win10 的可执行版本。
在 Mac 上通过虚拟机软件(VirtualBox 、VMware 等)或用 Docker 创建 win10 虚拟环境,在其中运行 Python 脚本。 将 Python 脚本部署到公有云服务商(AWS 、Azure 、GCP 等)提供的 win10 云主机实例上运行。 |
62
minamike 292 天前
为什么不问问神奇的 ChatGPT 呢
|
63
sunrisewestern 292 天前
你如果有调用包的话,就算几行的 python 脚本打包完也有几百 MB
|
65
m1klos 292 天前 via Android
借一台 Windows 或者去网吧或者瞅瞅有没有免费试用的云电脑
|
66
charlieethan 292 天前
这还不容易,用 GitHub CI ,运行环境使用 windows-2022 ,用 pyinstaller 命令行打包即可
|
67
iOCZ 292 天前
用 git workflow 打包成 exe
|
68
tairan2006 292 天前
@fulei #18 把 Python 脚本贴给 chatgpt ,让它翻译成 go ,然后`CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go` 交叉编译成 windows 的 exe 。
|
69
iorilu 292 天前
要么花钱找人编译下
要么下载个 python 到那个 win 上装下, 把代码拷过去 |
70
ctro15547 292 天前
有没有可能 云一台桌面电脑打包一个 exe , 按时计费的那种才几块钱一小时 足够打包了
|
71
rming 292 天前
1. 学习 rust 或者 go 2. 重写这段代码
|
72
hefish 292 天前
买一台 x86 的电脑嘛。
用完再卖掉。 能用钱解决的事儿,都不叫事儿。 |
73
GeruzoniAnsasu 292 天前
重保是吧
我干过类似的,而且我的 python 脚本更长,200 行左右 最后的解决方法是想办法让单位内部装上了 py 和 vscode ,然后把我手机放旁边对着抄了一遍。 当然了,我是纯内建库实现的,别想着用第三方包,那是给自己挖坑。 如果有界面或可视化需求,那就想办法渲染一个 html 出来,http 服务用内建库也完全够写了。 我当初差点还要手撸 html parser ,不过后来想想反正我要扒的目标网页也就那么一两个,于是用更 hard coded 的方式糊过去了 |
74
Hopetree 292 天前
用 pyinstaller 打包,在什么平台打出来的包就可以在什么平台运行,所以你找个 x86_64 的平台打包就行
|
75
brookegas 292 天前
#36 楼 是终极答案
1 、将 python 代码自动转成 Go 代码 2 、使用 Go 的交叉编译,直接输出 windows 版本的 exe 文件 |
76
ch2 292 天前
github action 编译
|
77
Lychee0 292 天前 via iPad 1
丢 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 ``` |
78
Lychee0 292 天前 via iPad
缩进被吞了 hhh 按 yaml 和 action 要求改下吧
|
79
loveuer 291 天前 via Android
@aptx4689 我最近正好遇到这个问题了,ps1 脚本在 win11 上默认不能通过左键或者右键点击运行了,需要提前开启允许运行才行,这对小白来说有点不太现实。考虑换 tinygo 生成 exe ,但是不能动态生成就没找到更好的方案
|
80
JustBecause 291 天前
某鱼上随便找个人帮你编译一下得了,不到百行代码编译一下,五块钱肯定有人愿意做
|