Python 集成pyenv virtualenv conda和ASE的最佳实践
我使用的是Linux桌面(特别是Pop_OS!20.04,类似于ubuntu) 我需要运行用于原子模拟的python包。 这可以通过多种方式安装(apt、pip、conda)。 出于我的目的,我需要使用conda安装它(尽可能与社区保持一致)。因为我不喜欢conda在bash中集成的方式,所以我决定使用pyenv作为虚拟环境管理器 因此,对于另一个问题的答案1,最好不要通过pyenv安装conda。 因此,在我简单的头脑中,我首先尝试了这个(案例A):Python 集成pyenv virtualenv conda和ASE的最佳实践,python,python-3.x,linux,conda,pyenv,Python,Python 3.x,Linux,Conda,Pyenv,我使用的是Linux桌面(特别是Pop_OS!20.04,类似于ubuntu) 我需要运行用于原子模拟的python包。 这可以通过多种方式安装(apt、pip、conda)。 出于我的目的,我需要使用conda安装它(尽可能与社区保持一致)。因为我不喜欢conda在bash中集成的方式,所以我决定使用pyenv作为虚拟环境管理器 因此,对于另一个问题的答案1,最好不要通过pyenv安装conda。 因此,在我简单的头脑中,我首先尝试了这个(案例A): 我用pyenv创建了一个虚拟环境 我使用正
$pyenv virtualenv 3.9.0案例a
(案例a)$哪条蟒蛇
/home/fex/.pyenv/chimes/python
(案例a)$python-V
Python 3.9.0
(案例a)$bash Anaconda3-2020.07-Linux-x86_64.sh
#我没有在bashrc中包括蟒蛇
#激活conda eval“$(/home/user/anaconda3/bin/conda shell.YOUR_shell_NAME hook)”或“source/bin/activate”
#康达初始化
(baseA)$source/home/fex/anaconda3/bin/activate
(基本)(个案a)$
这种双重环境很有趣,我认为不应该发生。
但我无法用conda安装ASE。所以我给出了conda init:
(基本)(案例a)$conda init
(基本)(案例a)$source~/.bashrc
(基础)$conda安装-c conda forge/label/cf202003 ase
(基数)$ase测试
...
fio/oi.py:TypeError:对象似乎不是类似文件的对象
=========摘要==========
测试次数363
通行证:260
失败次数:0
错误:1
跳过:102
=============================
测试套件失败!
所用时间:42.3秒
据我所知,这种方法是可行的,但绕过pyenv,我最终只使用了一个conda环境,这不是我首先想要的
案例B:
这并不重要。创建环境后,我尝试使用pyenv安装conda,但无法在pyenv环境中使用它
案例C:
我用以下方法解决问题:
$pyenv virtualenv miniconda3.X.Y fooenv
$pyenv版本
系统
2.7.18
*3.9.0(由PYENV_版本环境变量设置)
3.9.0/envs/caseA
3.9.0/envs/caseB
3.9.0/envs/coppie
3.9.0/envs/foo
凯萨
案例B
ccase
科皮
福
miniconda3最新版本
miniconda3-latest/envs/ccase#我用pyenv-virtualenv-miniconda3-latest-ccase-ccase-case C创建了这个
$pyenv-v
pyenv 1.2.21
$whichpython
/home/fex/.pyenv/chimes/python
$python-V
Python 3.9.0
pyenv激活ccase
pyenv virtualenv:提示更改将从未来版本中删除。配置“export PYENV\u VIRTUALENV\u DISABLE\u PROMPT=1”以模拟该行为。
(ccase)$pip安装测试
(ccase)$ase测试
[...]
==================================================================================1290通过,233跳过,1失败,193.06秒(0:03:13)中有5次警告
在这个阶段,我设法用conda安装了ASE。我在pyenv环境中完成了这项工作,该环境直接调用miniconda而不是python
$pyenv virtualenv miniconda3.X.Y fooenv
$pyenv激活fooend
(fooenv)$conda安装-c conda forge/label/cf202003 ase#此安装ase
(fooenv)$pip install pytest#在此版本的ase`ase test`中不起作用
(fooenv)$ase测试#该测试比不使用pyenv的conda实现的测试更长、更完整
这看起来非常复杂和脆弱,为什么不直接使用Conda?这是一个很好的观点。主要是因为我不喜欢它与我的bash交互的方式(你也可以责怪我的技术技能),也因为在anaconda之外的应用程序中有一个环境管理器似乎更合适。我不喜欢它与我的bash交互的方式。你能详细说明一下吗?对于anaconda以外的应用程序,似乎更适合使用环境管理器。你是什么意思?我必须预测一个方面。我用FORTRAN编写的软件在HPC上进行分布式计算。具体地说,我甚至不接触那个代码,我也不太关心代码,因为我处理的是这些代码的结果,就我而言,它们可能是rand函数的结果。1.因为我在很多方面都不是康达的专家,所以在过去,我的bashrc完全被康达搞砸了(我的错)。这包括减慢终端上的任何登录速度。2.有些软件包不适用于conda,我需要在外部使用它们。我知道这些都是借口,但我在一个领域工作,许多程序都是使用旧代码完成的,这些代码既没有维护也没有更新(例如,blender的python接口将原子坐标作为3D对象导入)。3.基本上,我的一个在IT部门工作的朋友建议我使用Pyev,它工作得非常好,直到我需要conda,正如我在最初的问题中解释的那样。底线是,现在他们要求我使用一点python,尽管没有给我足够的工具或时间来正确地学习和使用它。