编辑:
与同事讨论此问题后,我们认为我们知道为什么.bat运行与在cmd窗口中逐行键入时不同。我们认为行./venv/Scripts/activate.bat
在外壳程序中激活了一个虚拟环境,该外壳程序与其余代码的运行位置不同。从那一行开始,我将需要所有代码在同一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窗口退出得太快,我看不到发生了什么。