conda 4.2.13 MacOSX 10.12.1

我试图将包从pip安装到使用anaconda创建的新环境(虚拟)。在水蟒的文件里说这是完全没问题的。它的实现方式与virtualenv相同。

激活你想要放置程序的环境,然后pip安装程序…

我在《Ananconda》中创造了一个空旷的环境:

conda create -n shrink_venv

激活:

source activate shrink_venv

然后,我可以在终端中看到我正在我的环境(shrink_venv)中工作。当我尝试使用pip安装一个包时,问题出现了:

(shrink_venv): pip install Pillow

Requirement already satisfied (use --upgrade to upgrade): Pillow in /Library/Python/2.7/site-packages

因此,我可以看到它认为从系统范围的包中满足了需求。所以看起来环境没有正常工作,绝对不像文档中说的那样。我做错什么了吗?

只是一个说明,我知道你可以使用conda安装包,但我从anaconda的枕头有一个问题,所以我想从pip得到它,因为医生说这是好的。

输出-a pip:

/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip

**更新** 我发现这是一个很常见的问题。我发现conda env不能很好地与PYTHONPATH一起使用。即使在使用conda环境时,系统似乎总是在PYTHONPATH位置中查找。现在,当使用conda环境时,我总是运行未设置的PYTHONPATH,它工作得更好。我用的是mac电脑。


当前回答

我在这里看到了很多很好的答案,但仍然想分享我的,特别是如果你从pip时代转换到conda时代。按照这个步骤,您可以同时使用conda和pip安装任何包。

背景

仅用于Python包管理器 Conda -包括Python在内的许多语言的包和环境管理器

每次创建新的conda环境时,默认安装Pip

# this installs pip for your newly created environment
conda create -n my_new_env pip 

# activate your new conda environment
conda activate my_new_env

# now you can install any packages using both conda and pip
conda install package_name

#or
pip install package_name

这让你可以灵活地在conda环境中安装任何包,即使它们在conda中不可用(例如wordcloud)。

conda activate my_new_env

# will not work as wordcloud is not available in conda
conda install wordcloud

# works fine
pip install wordcloud

其他回答

根据Anaconda博客文章中描述的信息,我认为最佳实践是创建一个环境文件,这样就可以可预测地创建conda环境。

我尝试了这里发布的一些答案,但都没有成功,我不想乱搞python路径等。相反,我添加了一个环境。Yml文件类似如下:

name: your-environment-name
channels:
  - defaults
dependencies:
  - python=3.9.12
  - requests=2.28.1
  - pandas=1.4.4
  - pip=21.2.4
  - pip:
    - python-dotenv==0.19.2

这保证您首先安装所有conda依赖项,然后在conda环境中安装pip,并使用它来安装通过conda不可用的依赖项。这是可预测的、可重用的,并且遵循了博客文章中描述的建议。

然后使用下面的命令创建一个新的conda环境:

conda env create -f environment.yml

对于那些希望使用pip在conda中安装少量软件包的人,

sudo $(which pip) install <instert_package_name>

为我工作。

解释

无论如何,对我来说,哪个pip对于找到通往你所在位置的conda env pip路径是非常可靠的。然而,当使用sudo时,这似乎重定向路径或以其他方式破坏这一点。

使用$(pip)独立于sudo或任何命令执行该命令,类似于在Linux中运行/home/<username>/(mini)conda(3)/envs/<env_name>/pip。这是因为$()是单独运行的,并且文本输出添加到outer命令中。

今天,我已经花了好几个小时研究这个答案和其他很多答案,但以我30年的编程经验,我还是无法解决这个问题。

我跑:

conda create -n myenv python=3.9
conda activate myenv

不能用皮普。然而,在另一个环境中,如myenv2、myenv3、myenv4,它是有效的。

我得到了可怕的urllib3 httpconnection错误。

所以我认为这是urllib3缺失错误或其他什么。事实证明,事情远比这险恶得多。不幸的是,它在其他环境中也能工作,对我来说,我认为这与我在WSL2的Windows 10上使用Debian有关。解决办法很简单:

rm -rf $HOME/.cache

pip缓存已从相同环境的前一次安装中损坏。可能是因为我在conda基础上运行了更新,并进行了分发升级。因为我想用apache2运行一个带有flask的使用WSGI环境的生产系统,所以我希望始终具有相同的conda实例名。所以这是必须修复的!

我尝试了以上所有的方法。因为公司环境中的代理设置有问题,所以我没有使用过。幸运的是,我可以从浏览器打开pypi网站。最后,以下几点对我有用:

激活你的环境 手动从。whl下载包 https://pypi.org/simple/ < package_name > / 在激活环境的情况下,导航到从命令行下载.whl的文件夹 执行: PIP安装

我在anaconda上安装一个非conda包时遇到了一个问题,我遵循了这里最喜欢的答案,它不顺利(可能是因为我的anaconda在F目录下,env创建在C中,bin文件夹没有创建,我不知道,但它不起作用)。

根据anaconda pip已经安装(在anaconda提示符上使用命令“conda list”找到),但pip包没有安装,所以这是我所做的,我再次安装pip,然后pip安装包。

conda install pip
pip install see

See是一个非conda包。