我尝试使用 Pyinstaller 创建一个独立的 python 应用程序,该应用程序应该在 Windows、Linux 和 Mac 上运行并且可以重复地重新创建。 这个想法是使用 Docker 拥有一个固定的环境来创建应用程序并再次导出它。对于 Linux 和 Windows,我可以使用 https://github.com/cdrx/docker-pyinstaller 使其工作。
这个想法是让 docker 在其中创建一个功能齐全的 pyinstaller 应用程序(带有 GUI)并导出该应用程序。由于 pyinstaller 取决于软件包版本等,这应该在 docker 中修复,并且只应提供新的源代码来编译和导出新版本的软件。
在理想情况下(以及它如何与 Linux 和 Windows 配合使用),用户可以创建 docker 并编译软件本身:
docker build -t docker_pyinstaller_linux https://raw.githubusercontent.com/loipf/calimera_docker_export/main/linux/Dockerfile
docker run --rm -v "/path/to/app_source_code:/code/" -v "${PWD}:/code/dist/" docker_pyinstaller_linux
然而,对于 Mac,没有简单直接的解决方案。那里有一个 Mac docker 镜像 https://github.com/sickcodes/Docker-OSX,但是 docker 创建代码并不那么简单。
我的想法:
采取https://github.com/sickcodes/Docker-OSX/blob/master/Dockerfile.auto
最后添加miniconda的下载:
RUN chmod -R 777 /Users/user
### install miniconda to /miniconda
RUN curl -LO "http://repo.continuum.io/miniconda/Miniconda3-4.4.10-MacOSX-x86_64.sh"
RUN bash Miniconda3-4.4.10-MacOSX-x86_64.sh -p /miniconda -b
ENV PATH=/miniconda/bin:${PATH}
RUN conda update -y conda
### install packages from conda
RUN conda install -c anaconda -y python=3.8
RUN apt-get install -y python3-pyqt5
...
但是第一个命令已经由于
chmod: cannot access '/Users/user': No such file or directory
失败了,因为我处于与交互式会话不同的“环境”中(/home/arch/OSX-KVM
)。有人可以帮我吗?
我知道这些询问代码片段的问题并不是最好的,我可以向您展示我尝试过的所有内容,但我怀疑它们会对任何人有帮助。我想要一个最小的 Mac 示例,无需用户登录或 gui 等(这应该可以使用 https://github.com/sickcodes/osx-optimizer)。它应该只安装了 miniconda(带有 pyinstaller 和一些软件包)。
其他信息: 我可以在 docker 环境中以交互方式运行 mac 环境中的先前命令,但希望在映像中永久修复这些命令:
docker pull sickcodes/docker-osx:auto ### replace with docker with pyinstaller and packages
docker run -it \
--device /dev/kvm \
-p 50922:10022 \
sickcodes/docker-osx:auto
最终理想的是,我们可以使用 OSX_commands 运行上述命令
pyinstaller file.spec
相关问题但没有解决方案:
请考虑 docker-pyinstaller 的这个新映像,它结合了您确定的基础映像和 batonogov/docker-pyinstaller 维护的 docker-pyinstaller 版本。现在我刚刚把这些东西放到了 github 上。
缺少什么: