【发布时间】:2020-10-04 06:08:48
【问题描述】:
我想在 Conda 环境中运行批处理文件,而不是在 base 环境中,而是在另一个虚拟环境中(此处为 pylayers)。
我将activate.bat 脚本从F:\Anaconda3\Scripts 复制到F:\Anaconda3\envs\pylayers\Scripts。
而我的批处理脚本 (installer_win.bat) 是:
call F:\Anaconda3\envs\pylayers\Scripts\activate.bat
conda install numpy --yes
conda install mayavi --yes
conda install shapely --yes
conda install libgdal --yes
conda install gdal --yes
conda install h5py --yes
conda install seaborn --yes
conda install PIL --yes
conda install basemap --yes
conda install wxpython --yes
conda install netCDF4 --yes
pip install protobuf
pip install tqdm
pip install descartes
pip install bitstring
pip install geocoder
pip install triangle
pip install osmapi
pip install pyshp
pip install Image
pip install pathos
pip install SimPy==2.2
pip install simplekml
pip install smopy
python setup.py install
当我执行installer_win.bat 文件时,它显示以下行为:
Output: #stops after executing very first line in the batch file.
(base) C:\Users\mkdth>activate pylayers
(pylayers) C:\Users\mkdth>cd /d F:\Pycharm\Projects\pylayers-master
(pylayers) F:\Pycharm\Projects\pylayers-master>installer_win.bat
(pylayers) F:\Pycharm\Projects\pylayers-master>call F:\Anaconda3\envs\pylayers\Scripts\activate.bat
The system cannot find the path specified.
(pylayers) F:\Pycharm\Projects\pylayers-master>conda install numpy --yes
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: F:\Anaconda3\envs\pylayers
added / updated specs:
- numpy
The following packages will be downloaded:
package | build
---------------------------|-----------------
openssl-1.1.1g | he774522_0 4.8 MB
------------------------------------------------------------
Total: 4.8 MB
The following NEW packages will be INSTALLED:
numpy-base pkgs/main/win-64::numpy-base-1.18.1-py36hc3f5095_1
The following packages will be SUPERSEDED by a higher-priority channel:
ca-certificates conda-forge::ca-certificates-2020.4.5~ --> pkgs/main::ca-certificates-2020.1.1-0
certifi conda-forge::certifi-2020.4.5.2-py36h~ --> pkgs/main::certifi-2020.4.5.1-py36_0
numpy conda-forge::numpy-1.18.5-py36h4d86e3~ --> pkgs/main::numpy-1.18.1-py36h93ca92e_0
openssl conda-forge --> pkgs/main
Downloading and Extracting Packages
openssl-1.1.1g | 4.8 MB | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(pylayers) F:\Pycharm\Projects\pylayers-master>
我还尝试修改批处理文件以从 base 环境中激活 pylayers 环境并一一运行 conda 或 pip 命令,但它仅安装到 base 环境。看bat脚本
尝试 1
Installer_win.bat文件:
call F:\Anaconda3\Scripts\activate.bat
activate pylayers
pause
conda install numpy --yes
conda install mayavi --yes
conda install shapely --yes
conda install libgdal --yes
conda install gdal --yes
conda install h5py --yes
conda install seaborn --yes
conda install PIL --yes
conda install basemap --yes
conda install wxpython --yes
conda install netCDF4 --yes
pip install protobuf
pip install tqdm
pip install descartes
pip install bitstring
pip install geocoder
pip install triangle
pip install osmapi
pip install pyshp
pip install Image
pip install pathos
pip install SimPy==2.2
pip install simplekml
pip install smopy
python setup.py install
输出:激活 pylayers 环境并停止
(pylayers) F:\Pycharm\Projects\pylayers-master>installer_win.bat
(pylayers) F:\Pycharm\Projects\pylayers-master>call F:\Anaconda3\Scripts\activate.bat
(base) F:\Pycharm\Projects\pylayers-master>activate pylayers
(pylayers) F:\Pycharm\Projects\pylayers-master>
尝试2:
Installer_win.bat文件:
call F:\Anaconda3\Scripts\activate.bat
activate pylayers
conda install numpy --yes
conda install mayavi --yes
conda install shapely --yes
conda install libgdal --yes
conda install gdal --yes
conda install h5py --yes
conda install seaborn --yes
conda install PIL --yes
conda install basemap --yes
conda install wxpython --yes
conda install netCDF4 --yes
pip install protobuf
pip install tqdm
pip install descartes
pip install bitstring
pip install geocoder
pip install triangle
pip install osmapi
pip install pyshp
pip install Image
pip install pathos
pip install SimPy==2.2
pip install simplekml
pip install smopy
python setup.py install
输出:#activates 基础环境并停止
(pylayers) F:\Pycharm\Projects\pylayers-master>installer_win.bat
(pylayers) F:\Pycharm\Projects\pylayers-master>call F:\Anaconda3\Scripts\activate.bat
(base) F:\Pycharm\Projects\pylayers-master>activate pylayers
尝试 3
Installer_win.bat文件:
call F:\Anaconda3\Scripts\activate.bat
conda install numpy --yes
conda install mayavi --yes
conda install shapely --yes
conda install libgdal --yes
conda install gdal --yes
conda install h5py --yes
conda install seaborn --yes
conda install PIL --yes
conda install basemap --yes
conda install wxpython --yes
conda install netCDF4 --yes
pip install protobuf
pip install tqdm
pip install descartes
pip install bitstring
pip install geocoder
pip install triangle
pip install osmapi
pip install pyshp
pip install Image
pip install pathos
pip install SimPy==2.2
pip install simplekml
pip install smopy
python setup.py install
输出:#starts 在基础环境中安装
(pylayers) F:\Pycharm\Projects\pylayers-master>installer_win.bat
(pylayers) F:\Pycharm\Projects\pylayers-master>call F:\Anaconda3\Scripts\activate.bat
(base) F:\Pycharm\Projects\pylayers-master>activate pylayers
(pylayers) F:\Pycharm\Projects\pylayers-master>installer_win.bat
(pylayers) F:\Pycharm\Projects\pylayers-master>call F:\Anaconda3\Scripts\activate.bat
(base) F:\Pycharm\Projects\pylayers-master>conda install numpy --yes
Collecting package metadata (current_repodata.json): failed
CondaError: KeyboardInterrupt
^CTerminate batch job (Y/N)?
^C
有人可以帮我在 Conda 虚拟环境下运行这个批处理文件吗?
非常感谢任何建议。
【问题讨论】:
-
请重新审视您的问题并正确格式化,这不仅仅是批处理文件的代码/内容!
-
这个脚本除了安装东西还有其他目的吗?如果没有,我建议将所有这些都放入a YAML environment definition(是的,它也可以安装本地的东西——见Advanced Pip Example),然后简单地运行
conda env update -n pylayers -f env.yaml。否则,要在环境中执行任意脚本,有conda run -n pylayers installer_win.bat。 -
由于
conda是一个批处理文件,这些命令中的每一个是否都不应由call执行? -
感谢@merv "conda run -n pylayers installer_win.bat" 工作。 'conda env update -n pylayers -f env.yml' 的想法也是如此。
-
好的,我把它写成了一个正确的答案。
标签: batch-file pip anaconda conda virtual-environment