如何使批处理文件在水蟒提示符下运行

在 windows 中安装了 anaconda3之后,我可以在 anaconda 提示符下运行 python 命令,但不能在命令提示符中运行。 我想使一个桌面快捷方式来激活我的环境和运行它的蜘蛛。以前,我会使用 .bat文件执行此操作,但是现在我无法从 cmd.exe运行 python 命令,因此无法执行此操作。

对于水蟒提示符运行批处理文件有其他的方法吗? 我知道我可以只修改我的 PATH来让 cmd.exe运行 python 命令,但是如果可能的话我想避免这种情况。

102402 次浏览

我相信 Anaconda 提示符所做的只是打开 CMD 并运行一个批处理文件。执行脚本的第一个命令:

call <anaconda_dir>/Scripts/activate.bat <anaconda_dir>

延伸杰里米的回答:

您确实需要将 call用于“ activate.bat”脚本以及任何后续的与 Anaconda/Python 相关的命令。否则,即使使用 pause语句,提示符在运行命令后也会立即退出。请看下面的例子:

set root=C:\Users\john.doe\AppData\Local\Continuum\anaconda3


call %root%\Scripts\activate.bat %root%


call conda list pandas


pause

call "<anaconda_dir>\Scripts\activate.bat"

到脚本的开始(它实际上不需要参数,并且默认情况下它会激活 base环境)。

注意,在这一行之后,您可以使用 CONDA_ envars!

Powershell 版本:

$qtconsole="C:\Users\<YourUserName>\.anaconda\navigator\scripts\qtconsole.bat"
start-process $qtconsole -WindowStyle Hidden

注意: 由于 Linux QT GUI 库的 DLL 限制,这个脚本一次只能启动 qtcontrol 的一个实例,因为它只支持同时运行同一个 exe 的一个实例。这可能就是为什么他们使用“ AnacondaNavigator”来启动 QtConsole 程序来绕过这个限制的原因。

由于这个线程,我解决了我的挑战获得一个 Windows 批处理文件打开 Ananconda 提示符,然后运行一些 Python 代码。

下面是批处理文件:

@echo on
call C:\ProgramData\Anaconda3\Scripts\activate.bat
C:\ProgramData\Anaconda3\python.exe "D:\Documents\PythonCode\TFLAPI\V1.py"

对于 Windows,在批处理文件中使用以下脚本执行 Python 脚本。像这样简单地改变你的个人文件路径:

cmd /c C:\ProgramData\Anaconda3\condabin\conda.bat run "C:\ProgramData\Anaconda3\python.exe" "C:\Users\User Name\Path to your Python File\Python File.py"

如果您使用的是 Windows 操作系统,那么可以使用 git bash 作为上述解决方案的替代方案

  1. 您需要将 conda.sh的路径添加到您的 .bash_profile或其他名称,以便能够运行 conda 命令。这里有一个例子:

    echo ". C:/Users/user/Anaconda3/etc/profile.d/conda.sh" >> ~/.bash_profile
    
  2. Run your script => . script.sh

It would be a good alternative too.

Check this and this for more details. Hope it will help someone :).

扩展@N4v 应答,因为这是我在调用 Python 脚本时使用的唯一方法。Python 版本是3.7

set root=C:\Users\xxxx\Anaconda3 #Anaconda default  folder on my computer
set env1=C:\Users\xxxx\Anaconda3\envs\py37 #My Python environment folder. The name I gave is  py37. Can be specific to yours
call %root%\Scripts\activate.bat %env1% #Call command to activate py37 environment.
python "C:\Path to the folder with python file\Pythonfile.py" #Run the  file  of interest after running  python specific  to the called environment. Replace  this  with your files path and name.


pause

根据@ivan _ pozdeev 的回答,我发现以下是对我来说最干净的解决方案:

@ECHO OFF
CALL "<anaconda_dir>\Scripts\activate.bat" [<conda_environment_if_not_base>]
%CONDA_PYTHON_EXE% "<full_path_to_your_python_script>" %1 %2 %3 %4 %5 %6 %7 %8 %9
conda deactivate

例如:

@ECHO OFF
CALL "E:\ProgramData\Anaconda3\Scripts\activate.bat"
%CONDA_PYTHON_EXE% "C:\Users\<user>\Documents\Python3\my_project\src\my_script.py" %1 %2 %3 %4 %5 %6 %7 %8 %9
conda deactivate

通过在批处理文件的末尾包含 conda deactivate,可以使命令行保持启动时的状态。如果需要不同的 conda 环境,可以在 activate.bat之后指定。

通过. bat 执行水蟒脚本的最简单方法

set venv=name_of_virtual_env


call %USERPROFILE%\Anaconda3\Scripts\activate %USERPROFILE%\Anaconda3
call activate %venv%


:: Change directory to the relative path that's needed for script
cd %~dp0


:: Run script at this location
call %USERPROFILE%/Anaconda3/envs/%venv%/python.exe "%~dp0\main.py"
PAUSE

% USERPROFILE% = = C: 用户名

% ~ dp = = C: 用户命名项目 RUN.bat 的路径

“% ~ dp0 main.py”= = 运行目标脚本的路径