python - cmd 和 bat 行为不同
问题描述
编辑:
在与同事讨论该问题后,我们认为我们知道为什么 .bat 的运行方式与在 cmd 窗口中逐行键入时不同。我们认为该行在./venv/Scripts/activate.bat
与其余代码运行的地方不同的 shell 中激活了一个虚拟环境。从该行开始,我需要所有代码在同一个 shell 中运行。(仅供参考,我不确定这是否有意义,因为我对此比较陌生。)
我正在尝试通过运行带有必要命令的 bat 文件来创建虚拟环境。当我通过将 .bat 代码中的行复制粘贴到 cmd 窗口并单独运行每行来运行时,代码按预期工作。但是,当我运行 .bat 文件时,它不起作用。
我认为挑战来自 bat 脚本必须在目录中移动的事实,因为必须在本地文件夹中创建虚拟环境,而它随后调用的脚本和文件托管在网络文件夹中。
此设置无法更改,因此我需要能够在 .bat 文件中正确移动目录。
我在 StackOverflow 中环顾四周,找不到与类似行为相关的任何问题。我一直在阅读相关文档,但还没有发现任何有用的东西。我正在运行 anaconda3 发行版。Windows 10。我不确定哪些信息可能有助于排除故障,所以如果您需要更多信息,请告诉我。你会在下面找到我的代码。
echo ON
REM Change directory to user's local dir
chdir C:\Users\USERNAME
C:
REM Check whether environments folder exists, if not, create it.
if not exist "C:\Users\USERNAME\Environments\" mkdir C:\Users\USERNAME\Environments
REM Create virtual environment in this new/existing folder and activate it.
python -m venv venv/
"./venv/Scripts/activate.bat"
REM Change directory to network drive where document files are located
chdir I:\NETWORKDIR_PATH\FOLDER_OF_INTEREST
I:
REM Make sure necessary packages are installed.
pip install -r ./src/requirements.txt
REM Run script and close shell after 20 secs
python "./src/main_script.py"
REM FOLDER_OF_INTEREST contains the following items:
REM two excel files which will interact with the main_script.py script
REM a folder called "src" which has the packages to be installed within my environment
REM "src" also contains two python scripts. The first is the main_script.py, the other contains functions called by main_script.py
就目前而言,当我在 cmd 窗口中单独运行每一行时,一切正常。
如果我尝试运行 .bat 文件,代码会运行到
python -m venv venv/
"./venv/Scripts/activate.bat"
此时,cmd窗口退出并且没有其他任何事情发生......
任何帮助/建议表示赞赏!
PS:ping
命令在那里,因为如果没有,cmd窗口退出太快,我看不到发生了什么。
解决方案
推荐阅读
- r - R使用dplyr按组计算加权统计
- javascript - 可重复使用的数字输入组件在 NUXT 中无法正常工作
- latex - Sublime Text 3:使用 Latex 构建后,每次都停止打开空白窗口
- html - 有没有办法使用媒体最大宽度来加载页面
- css - 当我将鼠标悬停在实心边框上时,它不起作用
- javascript - 使用 v-for 遍历 id 都不同的 json 并将它们绑定到 PrimeVue 中的 Input
- python - 使用 pandas 从 python 中的 url 读取 csv 时出现“错误标记数据”
- google-colaboratory - colab中无法启动podman服务
- ruby - 如何将 curl 标头转换为 restcliet 请求
- mysql - SQL 左外连接和右外连接