如何在Anaconda Prompt中运行批处理文件

77
在Windows中安装anaconda3后,可以从anaconda提示符中运行Python命令,但无法从Windows命令提示符中运行。我想创建一个桌面快捷方式来激活我的环境并从中运行Spyder。之前,我会使用.bat文件来做到这一点,但现在我无法从cmd.exe运行Python命令,所以这不起作用了。
有没有另一种运行anaconda提示符批处理文件的方法?我知道我可以修改我的PATH来让cmd.exe运行Python命令,但如果可能的话,我想避免这样做。

5
我认为Anaconda命令提示符只是打开CMD并运行<anaconda_dir>/Scripts/activate.bat <anaconda_dir>作为第一条命令,因此您可以尝试将其放在脚本的顶部。 - Jeremy McGibbon
谢谢,已解决,这很容易! - SuperNano
太好了!我会将它移至答案,这样你就可以标记你的问题已得到解答。 - Jeremy McGibbon
<anaconda_dir> 是未知的语法。而且 Anaconda 并不总是安装在相同的目录下。 - Soren
11个回答

82

我认为Anaconda提示符所做的只是打开CMD并运行批处理文件。将您的脚本的第一个命令设为:

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

3
也许你可以在批处理文件中使用call,这样它就不会在执行完第一条命令后退出? - djvg
2
我发现即使使用“call”,我的提示符仍然会关闭,因此我在文件末尾添加了“cmd /k”。 - Ryan Huebert
1
解决方案有点不尽如人意,因为每个系统上的Anaconda目录都不同。最好像Linux一样有一个shebang,告诉脚本不要使用cmd.exe调用,而是使用Anaconda提示符。 - Soren
1
除非我遗漏了某个环境变量,否则您必须手动插入您的Anaconda目录,其中我已经指出<anaconda_dir>。 Anaconda提示符实际上只是cmd.exe,而“如果Windows更像Linux会更好”不是一个选项,因此shebang并不完全合适。 - Jeremy McGibbon
4
如果您已经创建了多个conda环境,那么您可以通过将其作为参数提供给activate.bat文件来激活特定的环境。因此,命令将变为call <anaconda_dir>/Scripts/activate.bat <env_name>。 - Ioannis K. Moutsatsos

47

延伸Jeremy的回答:

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

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

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

call conda list pandas

pause

工作得非常好,但在脚本运行后如何使用打开的提示符?有没有不退出的命令? - Demetry Pascal
是的,只需在最后加上cmd \k而不是pause。 - Kream

26

感谢这个帖子,我解决了打开Ananconda Prompt并运行一些Python代码的Windows批处理文件的问题。

以下是批处理文件:

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

非常感谢你! - adinda aulia
1
这是一个带有工作示例的完整解决方案。 - Soumya Boral
@JedB 当我双击这样的 .bat 文件时,会出现一个终端窗口和我的 GUI(使用 PySimpleGUI)。在 .bat 中是否有什么可以隐藏终端窗口的方法? - David Doria
@DavidDoria 我不知道有什么方法可以做到那样。 - JedB

17

添加

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

将此行代码添加到您的脚本的开头(它实际上不需要参数,并默认激活base环境)。

请注意,在此行代码之后,您可以利用CONDA_环境变量!


6

对于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"

3
通过 .bat 文件执行 Anaconda 脚本的最简单方法
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:\Users\用户名

%~dp 等同于 C:\Users\用户名\路径\到\项目\RUN.bat

"%~dp0\main.py" 等同于运行目标脚本的路径


1

PowerShell 版本:

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

注意:由于Linux QT GUI库仅支持同时运行一个相同exe的实例,因此此脚本一次只会启动一个qtconsole。这可能是他们使用“Anaconda Navigator”启动QtConsole程序以绕过此限制的原因。

安装“Active State Python 3.5”而不是Anaconda。确保它在您的路径中,然后键入:“PS C:\ user \ dfsdsdf> jupyter notebook”...您可以习惯使用笔记本电脑进行小型计算,而不是qtconsole。 - Bimo

0

对 @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

0

根据 @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之后指定它。

0
作为上述解决方案的替代,如果您使用的是Windows操作系统,您可以使用Git Bash。
  1. 你需要将 conda.sh 的路径添加到你的 .bash_profile 或者其他命名的文件中,以便能够运行 conda 命令。以下是一个示例:

    echo ". C:/Users/user/Anaconda3/etc/profile.d/conda.sh" >> ~/.bash_profile 
    
  2. 运行你的脚本 => . script.sh

这也是一个不错的选择。

查看thisthis以获取更多详细信息。 希望能对某些人有所帮助 :).


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接