[英]Using Pip to install packages to Anaconda Environment
康達 4.2.13 MacOSX 10.12.1
我正在嘗試將pip
中的軟件包安裝到使用 anaconda 創建的全新環境(虛擬)中。 在 Anaconda 文檔中,它說這很好。 它的完成方式與 virtualenv 相同。
激活要放置程序的環境,然后pip安裝程序...
我在 Ananconda 中創建了一個空環境,如下所示:
conda create -n shrink_venv
激活它:
source activate shrink_venv
然后我可以在終端中看到我正在我的 env (shrink_venv)
中工作。 問題來了,當我嘗試使用pip
安裝 package 時:
(shrink_venv): pip install Pillow
Requirement already satisfied (use --upgrade to upgrade): Pillow in /Library/Python/2.7/site-packages
所以我可以看到它認為系統范圍的 package 滿足了要求。 所以看起來環境工作不正常,絕對不像文檔中所說的那樣。 我在這里做錯了嗎?
請注意,我知道您可以對軟件包使用conda install
,但是我對 anaconda 的 Pillow 有疑問,所以我想從pip
獲得它,因為文檔說這很好。
Output which -a pip
:
/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip
** 更新 ** 我看到這是很常見的問題。 我發現 conda env 不能很好地與 PYTHONPATH 配合使用。 即使您使用 conda 環境,系統似乎總是在 PYTHONPATH 位置中查找。 現在,我在使用 conda 環境時總是運行unset PYTHONPATH
,而且效果更好。 我在Mac上。
對於遇到這種情況的其他人,我發現這是最直接的解決方案:
運行conda create -n venv_name
和conda create -n venv_name
conda activate venv_name
,其中venv_name
是您的虛擬環境的名稱。
運行conda install pip
。 這會將 pip 安裝到您的 venv 目錄。
找到您的 anaconda 目錄,並找到實際的 venv 文件夾。 它應該類似於/anaconda/envs/venv_name/
。
通過執行/anaconda/envs/venv_name/bin/pip install package_name
安裝新軟件包。
現在應該使用該虛擬環境的 pip 成功安裝軟件包!
您所要做的就是打開 Anaconda Prompt 並輸入
pip install package-name
會自動安裝到anaconda環境,無需使用
conda install package-name
由於某些 conda 軟件包可能缺乏超時支持,因此需要使用 pip 進行安裝,這是一種方法
如果您在 anaconda 中安裝了 pip,則可以在 jupyter notebook 或鏈接到 anaconda 的 python shell 中運行以下命令
pip.main(['install', 'package-name'])
使用pip.__version__
檢查您的 pip 版本。 如果是10.xx
或以上版本,那么用這行代碼安裝你的python包
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])
在您的 jupyter notebook 中,您可以通過這種方式在單元格中通過 pip 安裝 python 包;
!pip install package-name
或者您可以使用與 anaconda 關聯的 python 版本
!python3.6 -m pip install package-name
我通過以下方式解決了這個問題:
如果你有一個非 conda pip 作為你的默認 pip 但 conda python 是你的默認 python (如下)
>which -a pip
/home/<user>/.local/bin/pip
/home/<user>/.conda/envs/newenv/bin/pip
/usr/bin/pip
>which -a python
/home/<user>/.conda/envs/newenv/bin/python
/usr/bin/python
然后,而不是僅僅調用pip install <package>
,您可以將模塊標志-m
與 python 一起使用,以便它使用 anaconda python 進行安裝
python -m pip install <package>
這會將包安裝到 anaconda 庫目錄而不是與(非 anaconda)pip 關聯的庫目錄
這對我有用(參考圖片鏈接)
為了將來參考,如果您碰巧已經滿足了某個要求,您可以找到您的軟件包下載到的文件夾。 如果您在終端中向上滾動,您可以看到它。 它應該是這樣的:需求已經滿足,然后是路徑
[ ]
如果在創建 conda 環境時沒有添加 pip
conda create -n env_name pip
並且也沒有在環境中安裝 pip
source activate env_name
conda install pip
那么你得到的唯一 pip 就是系統 pip,它將全局安裝包。
正如您在本期中看到的 Bus ,即使您執行了上述任何一個過程,conda 環境中的 pip 行為仍然是未定義的。
為了確保使用安裝在 conda 環境中的 pip 而不必輸入冗長的/home/username/anaconda/envs/env_name/bin/pip
,我編寫了一個 shell 函數:
# Using pip to install packages inside conda environments.
cpip() {
ERROR_MSG="Not in a conda environment."
ERROR_MSG="$ERROR_MSG\nUse \`source activate ENV\`"
ERROR_MSG="$ERROR_MSG to enter a conda environment."
[ -z "$CONDA_DEFAULT_ENV" ] && echo "$ERROR_MSG" && return 1
ERROR_MSG='Pip not installed in current conda environment.'
ERROR_MSG="$ERROR_MSG\nUse \`conda install pip\`"
ERROR_MSG="$ERROR_MSG to install pip in current conda environment."
[ -e "$CONDA_PREFIX/bin/pip" ] || (echo "$ERROR_MSG" && return 2)
PIP="$CONDA_PREFIX/bin/pip"
"$PIP" "$@"
}
希望這對你有幫助。
python -m pip install Pillow
將使用激活的當前 Python 的 pip
source activate shrink_venv
對於那些希望使用 pip 在 conda 中安裝少量軟件包然后使用的人,
sudo $(which pip) install <instert_package_name>
為我工作。
說明
無論如何,對我來說, which pip
對於找到 conda env pip 路徑來說是非常可靠的。 但是,當使用sudo
,這似乎會重定向路徑或以其他方式破壞它。
使用$(which pip)
獨立於sudo
或任何命令執行此操作,類似於在 Linux 中運行/home/<username>/(mini)conda(3)/envs/<env_name>/pip
。 這是因為$()
是單獨運行的,並且文本輸出添加到外部命令中。
以上所有答案主要基於virtualenv的使用。 我只是全新安裝了 anaconda3,並且沒有安裝任何 virtualenv。 所以,我找到了一個更好的替代方案,而無需考慮創建 virtualenv。
如果你在 linux 中安裝了很多 pip 和 python 版本,那么首先運行下面的命令來列出所有安裝的 pip 路徑。
點子在哪里
你會得到類似這樣的輸出。
pip: /usr/bin/pip
/home/prabhakar/anaconda3/bin/pip
/usr/share/man/man1/pip.1.gz
復制要用於安裝包的 pip 路徑,並在以下命令中 sudo 替換/home/prabhakar/anaconda3/bin/pip
后粘貼它。
須藤
/home/prabhakar/anaconda3/bin/pip
install<package-name>
這對我來說效果很好。 如果安裝有問題,請留言。
如果您使用的是 Windows 操作系統,請打開Anaconda Prompt並輸入activate yourenvname
如果您使用的是 mac 或 Linux 操作系統,請打開終端並輸入source activate yourenvname
yourenvname
這里是您想要安裝 pip 包的所需環境
鍵入上述命令后,您必須在控制台輸出中看到您的環境名稱從base
更改為您鍵入的環境yourenvname
(這意味着您現在處於所需的環境上下文中)
然后你需要做的就是普通的pip install
命令,例如pip install yourpackage
通過這樣做,pip 包將安裝在您的 Conda 環境中
取決於您如何配置 PATH 環境變量。 當您的 shell 解析對 pip 的調用時,它將找到的第一個 bin 是哪個?
(test)$ whereis pip
pip: /home/borja/anaconda3/envs/test/bin/pip /home/borja/anaconda3/bin/pip
確保 anaconda 安裝中的 bin 文件夾位於 /usr/lib 之前(取決於您安裝 pip 的方式)。 所以一個例子:
(test) borja@xxxx:~$ pip install djangorestframework
....
Successfully installed asgiref-3.2.3 django-3.0.3 djangorestframework-3.11.0 pytz-2019.3 sqlparse-0.3.1
(test) borja@xxxx:~$ conda list | grep django
django 3.0.3 pypi_0 pypi
djangorestframework 3.11.0 pypi_0 pypi
我們可以看到 djangorestframework 安裝在我的測試環境中,但是如果我檢查我的基礎:
(base) borja@xxxx:~$ conda list | grep django
它是空的。
我個人喜歡使用.pam_environment處理我所有的 PATH 配置,這里有一個例子:
(base) borja@xxxx:~$ cat .pam_environment
PATH DEFAULT=/home/@{PAM_USER}/anaconda3/bin:${PATH}
一顆額外的彗星。 您安裝 pip 的方式可能會產生問題:
您應該使用: conda install pip --> 使用 pip 安裝的新軟件包將添加到 conda 列表中。
您不應該使用: sudo apt install python3-pip --> 新軟件包不會添加到 conda 列表中(因此不受 conda 管理),但您仍然可以使用它們(可能發生沖突)。
好吧,我嘗試了所有上述方法。 沒有一個對我有用。 以下對我有用:
我在 anaconda 上安裝非 conda 包時遇到問題,我在這里遵循了最喜歡的答案,但進展並不順利(可能是因為我的 anaconda 在 F 目錄中,而 env created 在 C 中,而 bin 文件夾未創建,我不知道,但它沒有用)。
根據 anaconda pip 已經安裝(可以在 anaconda 提示符下使用命令“ conda list
”找到),但是沒有安裝 pip 包,所以這就是我所做的,我再次安裝了 pip 然后 pip 安裝了該包。
conda install pip
pip install see
see
是一個非 conda 包。
我在這里看到了很多很好的答案,但仍然想分享對我有用的答案,尤其是當您從 pip-era 切換到 conda-era 時。 按照此操作,您可以使用conda
和pip
安裝任何軟件包。
背景
每次創建新的 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
如果你只是想有一個暢達的安裝。 只需從 PATH 變量中刪除所有其他 python 路徑。
只離開:
C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin
這允許您只使用pip install *
它將直接安裝到您的 conda 安裝中。
我知道最初的問題是關於 MacOS 下的 conda。 但我想分享我在 Ubuntu 20.04 上的經驗。
就我而言,問題是由於~/.bashrc
定義的別名造成的: alias pip='/usr/bin/pip3'
。 該別名優先於其他所有內容。
因此,出於測試目的,我刪除了運行unalias pip
命令的別名。 那么活動conda環境對應的pip
就已經正常執行了。
同樣的問題適用於python
命令。
只需activate shrink_venv
。 我嘗試創建新環境,我的conda安裝不允許我在開始時使用source。
卸載重復的 python 安裝。 只需保留 anaconda 並使用此處指定的所需 Python 版本創建一個 env: https : //docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html 。 然后你的 python 和 pip 版本會隨着你在 envs 之間切換而改變。
今天,我已經看了這個答案和許多其他答案幾個小時,但憑借 30 年的編程經驗,我無法弄清楚這一點。
我跑了:
conda create -n myenv python=3.9
conda activate myenv
並且無法使用 pip。 但是,在 myenv2、myenv3、myenv4 等其他環境中,它可以正常工作。
我得到了可怕的 urllib3 httpsconnection 錯誤。
所以認為它必須是缺少 urllib3 錯誤或其他原因。 事實證明,它比那更險惡。 不幸的是,它適用於其他環境,對我來說,我認為這與我在 Windows 10 和 WSL2 上使用 Debian 的事實有關。 修復很簡單:
rm -rf $HOME/.cache
pip 緩存是從先前安裝的同一環境中損壞的。 可能是因為我在 conda base 上運行了更新並進行了分發升級。 因為我想使用帶有 flask 的 WSGI 環境來運行帶有 apache2 的生產系統,所以我希望始終擁有相同的 conda 實例名稱。 所以這是一個必須解決的問題!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.