Sử dụng Pip để cài đặt các gói vào Môi trường Anaconda


177

bao cao su 4.2.13 MacOSX 10.12.1

Tôi đang cố gắng cài đặt các gói từ pipmột môi trường trong lành (ảo) được tạo bằng anaconda. Trong các tài liệu của Anaconda, nó nói rằng điều này là hoàn toàn tốt. Nó được thực hiện theo cách tương tự như đối với virtualenv.

Kích hoạt môi trường nơi bạn muốn đặt chương trình, sau đó cài đặt chương trình ...

Tôi đã tạo ra một môi trường trống rỗng ở Ananconda như thế này:

conda create -n shrink_venv

Kích hoạt nó:

source activate shrink_venv

Sau đó tôi có thể thấy trong thiết bị đầu cuối mà tôi đang làm việc trong env của tôi (shrink_venv). Vấn đề đang đến, khi tôi cố gắng cài đặt một gói bằng cách sử dụng pip:

(shrink_venv): pip install Pillow

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

Vì vậy, tôi có thể thấy nó nghĩ rằng yêu cầu được thỏa mãn từ gói toàn hệ thống. Vì vậy, có vẻ như môi trường không hoạt động chính xác, chắc chắn không giống như nó đã nói trong các tài liệu. Tôi đang làm gì đó sai ở đây?

Chỉ cần một lưu ý, tôi biết bạn có thể sử dụng conda installcho các gói, nhưng tôi đã gặp vấn đề với Gối từ anaconda, vì vậy tôi muốn lấy nó từ đó pip, và vì các tài liệu nói rằng điều đó là tốt.

Đầu ra của which -a pip:

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

** CẬP NHẬT ** Tôi thấy đây là vấn đề khá phổ biến. Những gì tôi đã tìm thấy là conda env không chơi tốt với PYTHONPATH. Hệ thống dường như luôn tìm kiếm ở các vị trí PYTHONPATH ngay cả khi bạn đang sử dụng môi trường conda. Bây giờ, tôi luôn chạy unset PYTHONPATHkhi sử dụng môi trường conda và nó hoạt động tốt hơn nhiều. Tôi đang ở trên máy mac.


9
Bạn đã thử conda install pipchưa?
lang Ức

4
bạn có thể thêm đầu ra which -a pipcho câu hỏi của bạn xin vui lòng?
cel

1
Bạn có một bộ PYTHONPATHmôi trường biến?
darthbith

1
đã có một vấn đề tương tự. Rõ ràng sử dụng pip là một phần của Anaconda dường như làm việc cho tôi.
Arsene Lupin

1
Có thực sự an toàn để cài đặt mọi thứ bằng cách sử dụng pip và conda? Tôi nghĩ bạn có thể gặp sự cố, như không biết nên sửa phiên bản nào để gỡ cài đặt ...
Charlie Parker

Câu trả lời:


201

Đối với những người khác gặp phải tình huống này, tôi thấy đây là giải pháp đơn giản nhất:

  1. Chạy conda create -n venv_namesource activate venv_name, venv_nametên của môi trường ảo của bạn ở đâu.

  2. Chạy đi conda install pip. Điều này sẽ cài đặt pip vào thư mục venv của bạn.

  3. Tìm thư mục anaconda của bạn và tìm thư mục venv thực tế. Nó nên ở đâu đó như thế /anaconda/envs/venv_name/.

  4. Cài đặt gói mới bằng cách làm /anaconda/envs/venv_name/bin/pip install package_name.

Điều này bây giờ sẽ cài đặt thành công các gói bằng cách sử dụng pip của môi trường ảo đó!


2
Đường dẫn cho binthư mục đã thay đổi? Tôi không còn thấy nó trong venv_namethư mục?
Jack

Chỉ cần thử tạo một venv mới, có vẻ như binvẫn ở cùng một chỗ.
Cối xay gió

2
Không có thư mục 'bin' nên các bước trên đã giúp. Một điều tôi muốn thêm là đang chạy 'mà pip' giúp xác định 'pip' nào thực sự đang cài đặt các gói và 'pip đóng băng' đưa ra danh sách các cài đặt trong các gói môi trường
Mykola

2
Tôi có tình huống mặc dù nguồn của tôi được kích hoạt, cài đặt của tôi không xảy ra trong môi trường. Chúng được cài đặt ở vị trí python mặc định.
Saisumanth Gopisetty

4
Câu trả lời này phần lớn là: Chạy piptừ conda env của bạn (cho dù đó là môi trường hay không) và cài đặt gói mà bạn muốn bằng cách sử dụng piptệp thực thi trong thư mục conda (trường hợp của tôi AppData\Local\Continuum\anaconda3\Scripts:)
Manuel Martinez

80

Tất cả bạn phải làm là mở Anaconda Prompt và gõ

pip install package-name

Nó sẽ tự động cài đặt vào môi trường anaconda mà không cần phải sử dụng

conda install package-name

Vì một số gói conda có thể thiếu hỗ trợ ngoài giờ nên cần phải cài đặt bằng pip và đây là một cách để làm điều đó

Nếu bạn đã cài đặt pip trong anaconda, bạn có thể chạy phần sau trong sổ ghi chép jupyter hoặc trong vỏ trăn của bạn được liên kết với anaconda

pip.main(['install', 'package-name'])

Kiểm tra phiên bản pip của bạn với pip.__version__. Nếu là phiên bản 10.x.xtrở lên, thì hãy cài đặt gói python của bạn với dòng mã này

subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])

Trong máy tính xách tay jupyter của bạn, bạn có thể cài đặt các gói python thông qua pip theo cách này;

!pip install package-name

hoặc bạn có thể sử dụng phiên bản python của bạn được liên kết với anaconda

!python3.6 -m pip install package-name

6
Làm thế nào để bạn "mở Anaconda nhắc"
Thomas Browne

3
Trên các cửa sổ, bạn phải tìm kiếm 'dấu nhắc anaconda' bằng cách sử dụng biểu tượng tìm kiếm hoặc đầu vào được tìm thấy trên thanh tác vụ và mở
sambeth

@sambeth trên mac?
Parthapratim Neog

1
Tôi nghĩ rằng chìa khóa là để chạy pip của Anaconda của bạn, nằm dưới môi trường toàn cầu hoặc cụ thể của Anaconda.
matanster

2
Câu trả lời này không chính xác. Toàn bộ vấn đề là đôi khi nó không cài đặt vào môi trường. Nó cài đặt trên toàn cầu. Để ngăn chặn điều đó, trước tiên bạn cần chạy conda install pipbên trong môi trường để đảm bảo bạn đang sử dụng phiên bản địa phương của pip.
peastman

33

Tôi đã giải quyết vấn đề này theo cách sau:

Nếu bạn có một pip không conda như pip mặc định của bạn nhưng python conda là python mặc định của bạn (như dưới đây)

>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

Sau đó, thay vì chỉ gọi pip install <package>, bạn có thể sử dụng cờ mô-đun -mvới python để nó sử dụng python anaconda để cài đặt

python -m pip install <package>

Điều này cài đặt gói vào thư mục thư viện anaconda chứ không phải thư mục thư viện được liên kết với pip (không phải anaconda)


3
Đây nên là câu trả lời. Hoạt động hoàn hảo trên Windows.
Geordie

9

Nếu bạn không thêm pip khi tạo môi trường conda

conda create -n env_name pip

và cũng không cài đặt pip trong môi trường

source activate env_name
conda install pip

sau đó pip duy nhất bạn có là pip hệ thống, sẽ cài đặt các gói trên toàn cầu.

Xe buýt như bạn có thể thấy trong vấn đề này , ngay cả khi bạn đã thực hiện một trong các quy trình được đề cập ở trên, hành vi của pip trong môi trường conda vẫn là loại không xác định.

Để đảm bảo sử dụng pip được cài đặt bên trong môi trường conda mà không phải gõ dài /home/username/anaconda/envs/env_name/bin/pip, tôi đã viết một hàm 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" "$@"
}

Hy vọng điều này là hữu ích cho bạn.


8

Đây là những gì làm việc cho tôi (Tham khảo hình ảnh được liên kết)

  1. Mở Anaconda
  2. Chọn Môi trường trong khung bên trái bên dưới nhà
  3. Ngay bên phải nơi bạn đã chọn và bên dưới thanh "môi trường tìm kiếm", bạn sẽ thấy cơ sở (root). Nhấn vào nó
  4. Một hình tam giác chỉ bên phải sẽ xuất hiện, nhấp vào nó một "thiết bị đầu cuối mở" chọn
  5. Sử dụng lệnh cài đặt pip thông thường ở đây. Không cần phải chỉ đến một môi trường / đường dẫn

Để tham khảo trong tương lai, bạn có thể tìm thấy thư mục mà các gói của bạn đang tải xuống nếu bạn có yêu cầu đã được thỏa mãn. Bạn có thể thấy nó nếu bạn cuộn lên trong thiết bị đầu cuối. Nó nên đọc một cái gì đó như: yêu cầu đã được thỏa mãn và sau đó là đường dẫn

[ pip cài đặt anaconda]


3

Đối với những người muốn cài đặt một số lượng nhỏ các gói trong conda với pip thì sử dụng,

sudo $(which pip) install <instert_package_name>

đã làm cho tôi.

Giải thích

Dường như, đối với tôi, điều đó which piprất đáng tin cậy để tìm đường dẫn conda env pip đến nơi bạn đang ở. Tuy nhiên, khi sử dụngsudo , điều này dường như chuyển hướng đường dẫn hoặc nếu không thì phá vỡ điều này.

Việc sử dụng $(which pip)thực thi điều này một cách độc lập với sudohoặc bất kỳ lệnh nào và gần giống với việc chạy /home/<username>/(mini)conda(3)/envs/<env_name>/piptrong Linux. Điều này là do $()được chạy riêng và đầu ra văn bản được thêm vào lệnh bên ngoài.


3

Tất cả các câu trả lời trên chủ yếu dựa trên việc sử dụng virtualenv. Tôi mới cài đặt anaconda3 mới và không cài đặt virtualenv nào trong đó. Vì vậy, tôi đã tìm thấy một sự thay thế tốt hơn cho nó mà không cần tự hỏi về việc tạo virtualenv.

Nếu bạn có nhiều phiên bản pip và python được cài đặt trong linux, trước tiên hãy chạy bên dưới lệnh để liệt kê tất cả các đường dẫn pip đã cài đặt.

trong đó có pip

Bạn sẽ nhận được một cái gì đó như thế này là đầu ra.

pip: / usr / bin / pip /home/prabhakar/anaconda3/bin/pip/usr/share/man/man1/pip.1.gz

Sao chép đường dẫn của pip mà bạn muốn sử dụng để cài đặt gói của bạn và dán nó sau khi sudo thay thế /home/prabhakar/anaconda3/bin/piptrong lệnh bên dưới.

/home/prabhakar/anaconda3/bin/pipcài đặt sudo<package-name>

Điều này làm việc khá tốt cho tôi. Nếu bạn có bất kỳ vấn đề cài đặt, xin vui lòng bình luận.


3

nếu bạn đang sử dụng hệ điều hành windows, hãy mở Anaconda Nhắc và gõactivate yourenvname

Và nếu bạn đang sử dụng hệ điều hành mac hoặc Linux, hãy mở Terminal và gõsource activate yourenvname

yourenvname Đây là môi trường mong muốn của bạn mà bạn muốn cài đặt gói pip

Sau khi gõ lệnh trên, bạn phải thấy rằng tên môi trường của bạn được thay đổi từ basethành môi trường đã nhậpyourenvname trong đầu ra của bàn điều khiển (có nghĩa là bạn hiện đang ở trong bối cảnh môi trường mong muốn của bạn)

Sau đó, tất cả những gì bạn cần làm là pip installlệnh bình thường, vdpip install yourpackage

Bằng cách đó, gói pip sẽ được cài đặt trong môi trường Conda của bạn


3

python -m pip install Pillow

Sẽ sử dụng pip của Python hiện tại được kích hoạt với

source activate shrink_venv


3

Phụ thuộc vào cách bạn định cấu hình biến môi trường PATH của bạn. Khi shell của bạn giải quyết cuộc gọi đến pip, đó là thùng đầu tiên mà nó sẽ tìm thấy?

(test)$ whereis pip
pip: /home/borja/anaconda3/envs/test/bin/pip /home/borja/anaconda3/bin/pip

Đảm bảo thư mục bin từ cài đặt anaconda của bạn là trước / usr / lib (tùy thuộc vào cách bạn đã cài đặt pip). Vì vậy, một ví dụ:

(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

Chúng ta có thể thấy djangorestframework đã được cài đặt trong môi trường thử nghiệm của mình nhưng nếu tôi kiểm tra cơ sở của mình:

(base) borja@xxxx:~$ conda list | grep django

Nó trống rỗng.

Cá nhân tôi thích xử lý tất cả cấu hình PATH của mình bằng cách sử dụng .pam_en môi trường , đây là một ví dụ:

(base) borja@xxxx:~$ cat .pam_environment
PATH DEFAULT=/home/@{PAM_USER}/anaconda3/bin:${PATH}

Thêm một commet. Cách bạn cài đặt pip có thể tạo ra sự cố:

  • Bạn nên sử dụng: conda install pip -> gói mới được cài đặt với pip sẽ được thêm vào danh sách conda.

  • Bạn shodul KHÔNG sử dụng: sudo apt install python3-pip -> gói mới sẽ không được thêm vào danh sách conda (vì vậy không được quản lý bởi conda) nhưng bạn vẫn có thể sử dụng chúng (có khả năng xảy ra xung đột).


Thêm một commet. Cách bạn cài đặt pip có thể tạo ra sự cố: - Bạn nên sử dụng: conda cài đặt pip -> gói mới được cài đặt với pip sẽ được thêm vào danh sách conda. - Bạn KHÔNG NÊN sử dụng: sudo apt install python3-pip -> gói mới sẽ không được thêm vào danh sách conda (vì vậy không được quản lý) nhưng bạn vẫn có thể sử dụng chúng (có khả năng xảy ra xung đột).
BorjaEst

chào mọi người :) Làm thế nào tôi có thể xóa thư mục bin như /usr/libtrong trường hợp đó là trước thư mục bin anaconda của tôi khi chạy whereis pip?
Lenn

Cố gắng sudo apt remove python3-piploại bỏ pip khỏi bản phân phối linux của bạn và sau đó trong môi trường conda bạn đang sử dụng : conda install -c anaconda pip.
BorjaEst

2

Tôi đã gặp phải một vấn đề trong việc cài đặt gói không conda trên anaconda, tôi đã làm theo câu trả lời thích nhất ở đây và nó không hoạt động tốt (có thể vì anaconda của tôi nằm trong thư mục F và env được tạo trong thư mục C và bin không được tạo, Tôi không biết nhưng nó không hoạt động).

Theo anaconda pip đã được cài đặt (được tìm thấy bằng lệnh " conda list" trên dấu nhắc anaconda), nhưng các gói pip không được cài đặt nên đây là những gì tôi đã làm, tôi cài đặt lại pip và sau đó cài đặt gói.

conda install pip
pip install see

see là một gói không conda.


2

Vâng, tôi đã thử tất cả các phương pháp trên. Không ai làm việc cho tôi. Sau đây làm việc cho tôi:

  1. Kích hoạt môi trường của bạn
  2. Tải xuống gói .whl theo cách thủ công từ https://pypi.org/simple/ /
  3. Điều hướng đến thư mục mà bạn đã tải xuống .whl từ dòng lệnh với môi trường của bạn được kích hoạt
  4. thực hiện: pip cài đặt gói_name_whthing.whl

1

Nếu bạn CHỈ muốn có một cài đặt conda. Chỉ cần xóa tất cả các đường dẫn python khác khỏi biến PATH của bạn.

Chỉ để lại:

C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin

Điều này cho phép bạn chỉ cần sử dụng pip install *và nó sẽ cài đặt thẳng vào cài đặt conda của bạn.


-1

Chỉ cần activate shrink_venvlàm như vậy. Tôi đã thử tạo môi trường mới và cài đặt conda của tôi không cho phép tôi sử dụng nguồn lúc đầu.


Bạn không cần sourcengay từ đầu nếu bạn ở trên Windows
KWx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.