簡體   English   中英

conda環境pip試圖全局安裝依賴項

[英]conda environment pip is trying to install dependencies globally

我的Python / Conda / Pip安裝以某種方式使pip甚至在活動的conda環境中運行時也嘗試安裝到全局site-packages目錄中。

在運行10.12.4的Macbook Pro上,可以通過以下方式重現:

  1. 創建一個conda環境: $conda create -n test python=3.6
  2. 激活conda環境: $source activate test
  3. 驗證pip命令是否引用了正確的pip二進制文件: $which pip /Users/ethankeller/anaconda3/envs/test/bin/pip
  4. 使用pip安裝任何軟件包-例如numpy: $pip install numpy Collecting numpy Using cached numpy-1.13.0-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl Installing collected packages: numpy Exception: Traceback (most recent call last): File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/commands/install.py", line 342, in run prefix=options.prefix_path, File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/req/req_set.py", line 784, in install **kwargs File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/req/req_install.py", line 851, in install self.move_wheel_files(self.source_dir, root=root, prefix=prefix) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files isolated=self.isolated, File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/wheel.py", line 345, in move_wheel_files clobber(source, lib_dir, True) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/wheel.py", line 316, in clobber ensure_dir(destdir) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/utils/__init__.py", line 83, in ensure_dir os.makedirs(path) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/os.py", line 220, in makedirs mkdir(name, mode) PermissionError: [Errno 13] Permission denied: '/lib/python3.6/site-packages/numpy' $pip install numpy Collecting numpy Using cached numpy-1.13.0-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl Installing collected packages: numpy Exception: Traceback (most recent call last): File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main status = self.run(options, args) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/commands/install.py", line 342, in run prefix=options.prefix_path, File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/req/req_set.py", line 784, in install **kwargs File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/req/req_install.py", line 851, in install self.move_wheel_files(self.source_dir, root=root, prefix=prefix) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/req/req_install.py", line 1064, in move_wheel_files isolated=self.isolated, File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/wheel.py", line 345, in move_wheel_files clobber(source, lib_dir, True) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/wheel.py", line 316, in clobber ensure_dir(destdir) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/site-packages/pip/utils/__init__.py", line 83, in ensure_dir os.makedirs(path) File "/Users/ethankeller/anaconda3/envs/test/lib/python3.6/os.py", line 220, in makedirs mkdir(name, mode) PermissionError: [Errno 13] Permission denied: '/lib/python3.6/site-packages/numpy'

我想某些環境變量設置有誤……關於什么可能是錯誤的,或者從哪里開始尋找任何建議?

經過一段時間的努力,我非常願意讓自己擺脫這個問題,所以我搜尋了一段時間,然后才弄清楚並進行了測試。

通過指定python版本創建新的conda env時,它將使用conda_root_python版本。 而且,如果您沒有安裝pip軟件包,而是嘗試在創建的conda env下使用pip,則它將僅運行conda_root_pip並將該軟件包安裝在根site_packages中。

我知道在您創建的conda env中安裝python軟件包的三種方法。 為了獲得更好的解釋,我們使用相同的python版本的conda根環境創建了一個conda env。

conda create -n myenv python

I.一位官員建議,使用conda命令為指定的conda環境安裝軟件包,

conda install -n myenv tensorflow

II。 另一個官方建議,進入您指定的環境並運行conda install

source activate myenv
conda install tensorflow

通過以上兩種方式,您無需安裝其他軟件包,例如pip和其他與pip相關的軟件包。

III。 對於那些真的想點點滴滴的人 ,只是因為習慣了。 安裝pip包(就像上述兩種方法一樣)。

conda install -n myenv pip

要么

source active myenv
conda install pip

然后在您的環境中進行pip安裝

pip install tensorflow

要全局安裝它,您可以使用“ sudo pip install numpy”

避免使用sudo來避免麻煩。 sudo將“全局”安裝Python軟件包,並可能覆蓋現有安裝,導致依賴項錯誤並影響其他用戶。 盡可能使用virtualenv,否則pip install --user,這將在當前用戶中安裝軟件包

pip install numpy --user

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM