为 Python 创建独立环境
Create standalone environment for Python
我正在开发一个基于Python的工具,我需要为没有技术技能的用户分发这个工具。我分发该工具的方法是创建一个包含所有要求的安装程序,包括 python 可执行文件和库。
为此,我尝试创建一个虚拟环境(使用 pipenv 创建它)并用我的代码复制生成的工作目录。在某些情况下,安装程序可以工作,因为某些用户的机器上有 Python;对于没有 Python 的用户,需要一些依赖项,但依赖项来自完整的 python 安装。
我已经尝试使用 Cx_freeze,但它不适用于我的应用程序。有没有办法创建一个独立的 python 环境来与我的应用程序一起分发?
https://www.pyinstaller.org/ 看起来像你想要的,它会生成你的 python 程序的 .exe/binary,可以在另一台机器上 运行。但似乎这个项目没有得到完全支持(仅支持 python 最高 3.6,而 3.7 目前正在运行)所以如果它不具备您需要的所有功能,您可能需要寻找其他地方。
我的解决方案是安装 python 版本和所需的软件包。我的解决方案结构是:
-> Python
-> Program
-> run.bat
第一个 Python 目录是包含所有可执行文件和软件包的 python 环境。 Program 目录包含项目文件和 run.bat,它们将环境设置为使用此本地安装。在目录 Python\Scripts
内有一个激活环境的存档。我的脚本代码是:
run.bat
cls
@ECHO OFF
call %~dp0Python\Scripts\activate.bat
ECHO Starting Program....
%~dp0Python\python %~dp0ProgramData\starter.py
activate.bat
@echo off
set "VIRTUAL_ENV=%~dp0\Python"
if defined _OLD_VIRTUAL_PROMPT (
set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
) else (
if not defined PROMPT (
set "PROMPT=$P$G"
)
if not defined VIRTUAL_ENV_DISABLE_PROMPT (
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
)
)
if not defined VIRTUAL_ENV_DISABLE_PROMPT (
set "PROMPT=(64bits) %PROMPT%"
)
REM Don't use () to avoid problems with them in %PATH%
if defined _OLD_VIRTUAL_PYTHONHOME goto ENDIFVHOME
set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%"
:ENDIFVHOME
set PYTHONHOME=
REM if defined _OLD_VIRTUAL_PATH (
if not defined _OLD_VIRTUAL_PATH goto ENDIFVPATH1
set "PATH=%_OLD_VIRTUAL_PATH%"
:ENDIFVPATH1
REM ) else (
if defined _OLD_VIRTUAL_PATH goto ENDIFVPATH2
set "_OLD_VIRTUAL_PATH=%PATH%"
:ENDIFVPATH2
set "PATH=%VIRTUAL_ENV%;%PATH%"
此解决方案适用于我的两个应用程序(64 位和 32 位)安装。
我正在开发一个基于Python的工具,我需要为没有技术技能的用户分发这个工具。我分发该工具的方法是创建一个包含所有要求的安装程序,包括 python 可执行文件和库。
为此,我尝试创建一个虚拟环境(使用 pipenv 创建它)并用我的代码复制生成的工作目录。在某些情况下,安装程序可以工作,因为某些用户的机器上有 Python;对于没有 Python 的用户,需要一些依赖项,但依赖项来自完整的 python 安装。
我已经尝试使用 Cx_freeze,但它不适用于我的应用程序。有没有办法创建一个独立的 python 环境来与我的应用程序一起分发?
https://www.pyinstaller.org/ 看起来像你想要的,它会生成你的 python 程序的 .exe/binary,可以在另一台机器上 运行。但似乎这个项目没有得到完全支持(仅支持 python 最高 3.6,而 3.7 目前正在运行)所以如果它不具备您需要的所有功能,您可能需要寻找其他地方。
我的解决方案是安装 python 版本和所需的软件包。我的解决方案结构是:
-> Python
-> Program
-> run.bat
第一个 Python 目录是包含所有可执行文件和软件包的 python 环境。 Program 目录包含项目文件和 run.bat,它们将环境设置为使用此本地安装。在目录 Python\Scripts
内有一个激活环境的存档。我的脚本代码是:
run.bat
cls
@ECHO OFF
call %~dp0Python\Scripts\activate.bat
ECHO Starting Program....
%~dp0Python\python %~dp0ProgramData\starter.py
activate.bat
@echo off
set "VIRTUAL_ENV=%~dp0\Python"
if defined _OLD_VIRTUAL_PROMPT (
set "PROMPT=%_OLD_VIRTUAL_PROMPT%"
) else (
if not defined PROMPT (
set "PROMPT=$P$G"
)
if not defined VIRTUAL_ENV_DISABLE_PROMPT (
set "_OLD_VIRTUAL_PROMPT=%PROMPT%"
)
)
if not defined VIRTUAL_ENV_DISABLE_PROMPT (
set "PROMPT=(64bits) %PROMPT%"
)
REM Don't use () to avoid problems with them in %PATH%
if defined _OLD_VIRTUAL_PYTHONHOME goto ENDIFVHOME
set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%"
:ENDIFVHOME
set PYTHONHOME=
REM if defined _OLD_VIRTUAL_PATH (
if not defined _OLD_VIRTUAL_PATH goto ENDIFVPATH1
set "PATH=%_OLD_VIRTUAL_PATH%"
:ENDIFVPATH1
REM ) else (
if defined _OLD_VIRTUAL_PATH goto ENDIFVPATH2
set "_OLD_VIRTUAL_PATH=%PATH%"
:ENDIFVPATH2
set "PATH=%VIRTUAL_ENV%;%PATH%"
此解决方案适用于我的两个应用程序(64 位和 32 位)安装。