问题复现

若以如下方式启动python容器

docker run -it --rm python:3.13.7 /bin/bash

创建示例代码

cat > main.py <<EOF
if __name__ == "__main__":
    print("Hello World!")
EOF

在这里插入图片描述

测试代码

python main.py

在这里插入图片描述

在容器内完成安装依赖并进行打包时

pip install --no-color --progress-bar off pyinstaller

在容器中具有资源限制必须关闭进度条和颜色否则会导致安装失败。

在这里插入图片描述
执行打包程序

pyinstaller --onefile --console main.py

执行后出现如下错误:

PermissionError: [Errno 1] Operation not permitted: ‘/usr/local/bin/python3.13’

错误栈如下:

....
258 INFO: Module search paths (PYTHONPATH):
['/usr/local/lib/python313.zip',
 '/usr/local/lib/python3.13',
 '/usr/local/lib/python3.13/lib-dynload',
 '/usr/local/lib/python3.13/site-packages',
 '/usr/local/lib/python3.13/site-packages/setuptools/_vendor',
 '/root']
Traceback (most recent call last):
  File "/usr/local/bin/pyinstaller", line 7, in <module>
    sys.exit(_console_script_run())
             ~~~~~~~~~~~~~~~~~~~^^
....
  File "/usr/local/lib/python3.13/subprocess.py", line 1857, in _execute_child
    self._posix_spawn(args, executable, env, restore_signals, close_fds,
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      p2cread, p2cwrite,
                      ^^^^^^^^^^^^^^^^^^
                      c2pread, c2pwrite,
                      ^^^^^^^^^^^^^^^^^^
                      errread, errwrite)
                      ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/subprocess.py", line 1801, in _posix_spawn
    self.pid = os.posix_spawn(executable, args, env, **kwargs)
               ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 1] Operation not permitted: '/usr/local/bin/python3.13'

解决方案

该问题是由于pyinstaller 在运行依赖一些系统组件,在python:3.13.7镜像中不具备权限。

建议更换镜像到具有开发环境的python镜像,例如:“python:3.13.7-bookworm”,bookworm表示debian的系统版本。

docker run -it --rm python:3.13.7-bookworm /bin/bash

再次打包可以发现已经正常运行,但是任然有一些ldd错误信息

pyinstaller --onefile --console main.py

在这里插入图片描述

提示没有读取对应动态库的权限 ldd: error: you do not have read permission for `/usr/local/lib/python3.13/lib-dynload/fcntl.cpython-313-aarch64-linux-gnu.so’

更多推荐