【发布时间】:2021-12-15 20:16:40
【问题描述】:
我正在运行我自己的应用程序,它在 Windows 上的 Python 上使用 Kivy。每次使用该应用程序时,我都需要在运行该应用程序之前激活 kivy venv 脚本,我发现这很麻烦,所以我创建了一个批处理文件来配合它:
@echo off
python -m virtualenv kivy_venv
kivy_venv\Scripts\activate
python myapp.py
pause
问题是,批处理文件在 kivy_venv\Scripts\activate 之后立即终止,我很确定这些是我在命令提示符中键入的行以使其正常工作,那么那里出了什么问题?
E:我看到 cmets 在激活行之前使用 call,但它似乎产生了同样的问题,所以我怀疑 Kivy 的 activate.bat 文件本身可能存在问题:
@echo off
set "VIRTUAL_ENV=C:\......\kivy_venv"
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 "ENV_PROMPT="
if NOT DEFINED ENV_PROMPT (
for %%d in ("%VIRTUAL_ENV%") do set "ENV_PROMPT=(%%~nxd) "
)
set "PROMPT=%ENV_PROMPT%%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%\Scripts;%PATH%"
【问题讨论】:
-
这在本网站的 [python] [batch-file] 标记页面中已多次提及。使用
call kivy_venv\Scripts\activate,而不是kivy_venv\Scripts\activate。 -
我试过了,但还是出现了同样的问题。
标签: python batch-file kivy