不知何故,我的Python / Conda / Pip安装是这样的,即使在活动的conda环境中运行时,pip也会尝试安装到全局site-packages目录。
在运行10.12.4的macbook pro上,我可以通过以下方式重现:
$conda create -n test python=3.6
$source activate test
$which pip
/Users/ethankeller/anaconda3/envs/test/bin/pip
$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'
我想某些环境变量在某种程度上是错误的......有什么建议可能是错的,或者从哪里开始寻找?
答案 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