conda environment pip正在尝试全局安装依赖项

时间:2017-06-14 18:50:10

标签: python pip conda

不知何故,我的Python / Conda / Pip安装是这样的,即使在活动的conda环境中运行时,pip也会尝试安装到全局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'
  5. 我想某些环境变量在某种程度上是错误的......有什么建议可能是错的,或者从哪里开始寻找?

2 个答案:

答案 0 :(得分:2)

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

避免使用sudo来避免麻烦。 sudo将“全局”安装Python软件包,并可能覆盖现有安装,导致依赖项错误并影响其他用户。尽可能使用virtualenv,否则pip install --user,这将在当前用户中安装软件包

pip install numpy --user

答案 1 :(得分:1)

经过一段时间的努力,我非常愿意清楚这个问题,所以我搜索了一会儿,然后想出来并进行了测试。

通过指定python版本创建新的conda env时,它将使用conda_root_python版本。如果你没有安装 pip 包,并尝试在你创建的conda env下使用pip,它只会运行conda_root_pip并在root site_packages中安装包。

我知道在您创建的conda环境中安装python包 的三种方法。 为了更好的解释,我们使用相同的conda根环境的python版本创建一个conda env。

conda create -n myenv python

予。其中一位官员建议,使用 conda 命令为指定的conda环境安装包,

conda install -n myenv tensorflow

II。另一个官方建议,进入你指定的环境并运行conda install

source activate myenv
conda install tensorflow

以上两种方式您不需要安装额外的软件包,如pip和其他与pip相关的软件包。

III。对于那些真正想要 pip 的人,只是因为习惯了。 安装pip包(就像上面两种方式一样)。

conda install -n myenv pip

source active myenv
conda install pip

然后在你的环境中进行pip安装

pip install tensorflow