ChatGPT解决这个技术问题 Extra ChatGPT

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

在 windows 中安装 anaconda3 后,我可以从 anaconda 提示符运行 python 命令,但不能从 windows 命令提示符运行。我想创建一个桌面快捷方式来激活我的环境并从中运行 spyder。以前,我会使用 .bat 文件执行此操作,但现在我无法从 cmd.exe 运行 python 命令,这不起作用。

是否有另一种方法可以为 anaconda 提示符运行批处理文件?我知道我可以修改我的 PATH 以让 cmd.exe 运行 python 命令,但如果可能的话,我想避免这种情况。

我相信 Anaconda 提示符所做的只是打开 CMD 并运行 <anaconda_dir>/Scripts/activate.bat <anaconda_dir> 作为第一个命令,因此您可以尝试将其放在脚本的顶部。
谢谢,工作,这很容易!
伟大的!我会将其移至答案,以便您将问题标记为已回答。
是未知语法。并且 anaconda 并不总是安装到同一个目录中。

f
flywire

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

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

并且也许在您的批处理文件中使用 call,所以它不会在第一个命令后退出?
我发现即使使用 call 我的提示也会关闭,我在文件末尾添加了 cmd /k
解决方案有点不尽人意,因为每个系统上的anaconda目录都不一样。最好有一个类似于 Linux 的 shebang,它告诉脚本不要使用 cmd.exe 而是使用 anaconda 提示符调用。
您必须手动将您的 anaconda 目录插入到我已指示 的位置,除非我缺少环境变量。 anaconda 提示符实际上只是 cmd.exe,并且“如果 Windows 更像 Linux 会更好”不是一个选项,所以 shebang 不太有意义。
如果您创建了多个 conda 环境,则可以通过将其作为参数提供给 activate.bat 文件来激活特定环境。所以命令会变成 call /Scripts/activate.bat
N
N4v

扩展杰里米的答案:

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

效果很好,但是脚本运行后如何使用打开的提示符?是否有一些命令不退出?
是的,只需在最后添加 cmd \k 而不是暂停
J
JedB

多亏了这个线程,我解决了获取 Windows 批处理文件以打开 Ananconda Prompt 然后运行一些 python 代码的挑战。

这是批处理文件:

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

非常感谢你HHH
这是带有工作示例的完整解决方案。
@JedB 当我双击这样的 .bat 文件时,我会得到一个终端窗口以及我的 GUI(使用 PySimpleGUI)。 .bat 中是否有可以隐藏终端窗口的操作?
@DavidDoria 我不知道有什么方法可以做到这一点。
i
ivan_pozdeev

添加

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

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

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


J
Jose R

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

B
Bimo

电源外壳版本:

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

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


安装“活动状态python 3.5”而不是anaconda ..确保它在你的路径中然后输入:“PS C:\user\dfsdsdf> jupyter notebook”......你可以习惯使用笔记本而不是qtconsole进行小计算
D
DINA TAKLIT

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

您需要将 conda.sh 的路径添加到您的 .bash_profile 或任何名称中,以便能够运行 conda 命令。这是一个示例: echo ".C:/Users/user/Anaconda3/etc/profile.d/conda.sh" >> ~/.bash_profile 运行您的脚本 => 。脚本.sh

这也将是一个不错的选择。

查看 thisthis 了解更多详情。希望它会帮助某人:)。


D
Dharman

扩展@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

g
geodata

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


A
Aaron Roethe

通过 .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\name

%~dp == C:\Users\name\path\to\Project\RUN.bat

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