当前位置: 首页 > 知识库问答 >
问题:

集成pyenv virtualenv conda和ASE的最佳实践

柳钟展
2023-03-14

我使用的是带有Linux的桌面(特别是Pop_OS!20.04,类似于ubuntu)。

我需要运行ASE,它是用于原子模拟的python包。这可以通过多种方式安装(apt、pip、conda)。为了达到我的目的,我需要用conda安装它(尽可能与社区保持一致)。由于我不喜欢conda在bash中的集成方式,我决定使用pyenv作为虚拟环境管理器。

因此,对于另一个stackoverflow问题,最好不要通过pyenv安装conda。因此,在我简单的头脑中,我首先尝试了这个(案例A):

  1. 我用pyenv创建了一个虚拟环境;
  2. 我使用正确的脚本安装conda,现在使用pyenv
  3. 在环境中并使用conda安装ASE
$ pyenv virtualenv 3.9.0 caseA
(caseA) $ which python  
/home/fex/.pyenv/shims/python
(caseA) $ python -V
Python 3.9.0
(caseA) $ bash Anaconda3-2020.07-Linux-x86_64.sh
# I did not include anaconda in the bashrc
# To activate conda eval "$(/home/user/anaconda3/bin/conda shell.YOUR_SHELL_NAME hook)" or "source <path to conda>/bin/activate"
# conda init
(baseA) $ source /home/fex/anaconda3/bin/activate
(base) (caseA) $

这种双重环境挺有意思的,我觉得应该不会发生。然而,我无法将ASE与康达一起安装。所以我给了< code>conda init:

(base)(caseA) $ conda init
(base)(caseA) $ source ~/.bashrc
(base) $ conda install -c conda-forge/label/cf202003 ase
(base) $ ase test
...
fio/oi.py: TypeError: Object does not appear to be a file-like object
========== Summary ==========
Number of tests   363
Passes:           260
Failures:           0
Errors:             1
Skipped:          102
=============================
Test suite failed!
Time elapsed: 42.3 s

据我所知,这种方法是有效的,但是绕过pyenv,我最终只是使用了一个conda环境,这不是我首先想要的。

案例B:这并不重要。创建环境后,我尝试用pyenv安装conda,但是我无法在pyenv环境中使用它。

案例C:我通过以下方式解决问题:

  1. 用pyenv安装了conda
  2. 创建一个依赖conda而不是特定版本的python的pyenv虚拟环境
$ pyenv virtualenv miniconda3.X.Y fooenv

另一个原因是,因为我在这里写道,ASE是一个非常受欢迎的标准,在DFT(密度泛函理论)领域,这是一个在化学/物理领域引用最多的话题。然而,手册和指南的编写跟不上python的快节奏。

额外信息

$ pyenv versions
  system
  2.7.18
* 3.9.0 (set by PYENV_VERSION environment variable)
  3.9.0/envs/caseA
  3.9.0/envs/caseB
  3.9.0/envs/coppie
  3.9.0/envs/foo
  caseA
  caseB
  ccase
  coppie
  foo
  miniconda3-latest
  miniconda3-latest/envs/ccase # I created this with pyenv virtualenv miniconda3-latest ccase ccase stands for case C
$ pyenv -v
pyenv 1.2.21
$ which python
/home/fex/.pyenv/shims/python
$ python -V
Python 3.9.0
 pyenv activate ccase
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(ccase) $ pip install pytest
(ccase) $ ase test
[...]
====================================================================== 1290 passed, 233 skipped, 1 xfailed, 5 warnings in 193.06s (0:03:13)

共有1个答案

施赞
2023-03-14

在这个阶段,我设法使用conda安装ASE。我是在pyenv环境中完成的,该环境直接调用minicon da而不是python

$ pyenv virtualenv miniconda3.X.Y fooenv
$ pyenv activate fooend
 (fooenv) $ conda install -c conda-forge/label/cf202003 ase # This installs ASE 
 (fooenv) $ pip install pytest # In this version of ase `ase test` does not work
 (fooenv) $ ase test # This test is longer and more complete that the once achieve with conda without pyenv
 类似资料:
  • 问题内容: 是否可以集成Python和JavaScript?例如,假设您希望能够在JavaScript中定义类并从Python使用它们(反之亦然)。如果是这样,最好的方法是什么?我不仅对这是否可行而且对是否 有人在“严肃的”项目或产品中做到了 感兴趣。 我想举个例子,可以使用Jython和Rhino,但我很好奇是否有人真正做到了这一点,以及是否有针对其他平台的解决方案(尤其是CPython)。 问

  • 问题内容: 集成erlang和python的最佳方法是什么? 我们需要在erlang中调用python函数,并在python中调用erlang函数。目前,我们正在尝试将SOAP用作这两种语言之间的中间层,但是我们有很多“不兼容”的麻烦。您能否建议执行集成的最佳方法? 问题答案: 如erlport所述,您可以在Erlang端使用Erlang端口协议和term_to_binary / binary_t

  • 问题内容: 您的团队如何处理构建? 我们使用Cruise Control,但是(由于缺乏知识)我们遇到了一些问题-SVN中的代码冻结-生成管理 具体来说,当不断检入代码时,如何提供特定版本? 通常,您能否讨论在发行管理中使用的最佳实践? 问题答案: 我很惊讶这不是重复的,但是我找不到另一个。 好的,这是交易。它们是两个独立但相关的问题。 对于构建管理,重要的一点是您应该具有一个可重复的自动构建,该

  • 这里是背景,我试图创建一个DSL,让客户写简单的脚本查询到我们的mongodb为基础的数据库。我选择antlr来实现DSL。 null 那么antlrers,你认为哪一个是我作为一个antlr新手应该走的路?你能列出每种方法的优点和缺点吗?或者你有其他方法可以推荐?

  • 问题内容: 我想验证集合是否为空和。任何人都可以让我知道最佳做法。 目前,我正在检查以下内容: 问题答案: 如果在项目中使用Apache Commons Collections 库,则可以使用和方法分别检查集合或映射是否为 空 或为 空 (即它们是“空安全的”)。 这些方法背后的代码或多或少是用户@icza在其答案中所写的内容。 无论您做什么,都请记住,随着代码复杂度的降低,编写的代码越少,测试的

  • 问题内容: 我想制作一个与用户文件交互的桌面GUI(当然要经过许可)。我下载文件并将其放在用户选择的目录中的代码全部用python编写。这段代码还有很多,但所有内容都是用python编写的。 我希望GUI部分成为桌面应用程序,以便客户端可以轻松地交互和运行程序。 我想用Java制作此GUI,并在有人按下按钮后使其与python代码交互。 实现此目标的最佳方法是什么? 问题答案: 我会这样: 您还可