如何创建使用PyPy的Conda环境?

时间:2018-11-12 17:06:09

标签: python conda pypy

这是我的问题。我设法通过以下命令使用conda安装PyPy:

conda install -c conda-forge pypy3.5

不幸的是,当我尝试创建一个使用此pypy3可执行文件的环境时,我找不到解决方法。如果我运行pypy3,我将获得PyPy shell,而没有任何问题,我也可以使用pypy3而不是python运行程序。

尽管现在,我希望能够使用PyPy创建一个完整的环境。我曾尝试过以下类似的事情:

conda create -n pypy3 python=pypy3
conda create -n pypy3 python=pypy3 -c conda-forge

我尝试指定pypy3.5和其他变体,但没有任何效果。 我可以在Miniconda安装箱中看到pypy3可执行文件,但找不到Conda使用它的方法。我在互联网上找不到很多东西,因为人们似乎只要求通过Conda安装PyPy,而没有要求使用PyPy创建环境。

这是我的问题:

  • 是否已经有使用PyPy而非常规CPython创建Conda环境的方法?
  • 是否有一种方法可以迫使Conda首先在本地查看,而不是在线检查发行版?
  • 当我们使用Conda创建环境时,是否有一种方法可以强制将可执行文件用作Python?
  • 是否可以创建一个常规环境,然后强制该环境指向我的pypy3可执行文件?

我不知道是否有人可以在这里提供帮助。也许解决方案已经存在,但无论如何我都找不到很多。

编辑:如@darthbith所建议,我可以使用以下命令:

conda create -n pypy3 -c conda-forge pypy3.5

但是,这并没有达到我的期望。我可以使用pypy3来获取外壳程序并执行我的Python程序,但是它不能作为常规Python版本处理。我想让PyPy像任何版本的Python一样被考虑,并能够使用pip安装软件包(大多数纯Python软件包应与PyPy一起使用)。

我知道很多人会建议我不要在这里做什么,但是我认为它只是Python的一个更快的版本,适用于不依赖C库的任何事物。由于我正在使用纯Python库,而PyPi中的许多库都是用纯Python编写的,所以我不明白为什么我无法在这里实现我想做的事情。

4 个答案:

答案 0 :(得分:2)

Conda现在更加顺畅地支持PyPy。

conda config --set channel_priority strict
conda create -c conda-forge -n pypy pypy
conda activate pypy

为pypy构建conda软件包仍然需要做很多工作,但是已经有很多兼容性。例如,

conda install mpmath
conda install numpy

现在都可以工作。

参考:https://conda-forge.org/blog/posts/2020-03-10-pypy

还要注意,here描述了将py和pypy一起使用的官方建议,重点是:

使用pip的最佳做法是始终将其称为<python> -mpip ...,但是如果希望能够直接从命令行调用pip,则必须调用{{1} }。

答案 1 :(得分:1)

可能无法完全实现您想要的功能,但这是我所做的:

制作一个新的conda env

conda create --name pypy_env
conda activate pypy_env

使用conda安装pypy3

conda install pypy3

使用Install pip on pypy

中的方法获取pypy3的点

使用

为pypy安装软件包
pypy3 -m pip install <name_of_package>

对于某些软件包,它更倾向于使用预构建的pypy wheel文件,其中一些可以在https://www.lfd.uci.edu/~gohlke/pythonlibs/

中找到

答案 2 :(得分:0)

像这样为我工作:

conda create -n pypy3 -c conda-forge pypy3.5

此后,您必须在环境的bin目录中的链接到pypy3解释器

ln -s pypy3 python

答案 3 :(得分:0)

我不确定发生了什么变化,但 conda install pypy3 绝对不适合我(2021 年 1 月):

conda install pypy3
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.

PackagesNotFoundError: The following packages are not available from current channels:

  - pypy3

Current channels:

  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/r/noarch
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://repo.anaconda.com/pkgs/msys2/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.