【问题标题】:Wrong pip in conda envconda env中的错误点
【发布时间】:2015-11-26 13:13:54
【问题描述】:

我有一个名为 birdid 的 conda env。

在环境中工作时(即我做了source activate bird_dev),显示了提供的包列表

(bird_dev)...$ conda list
# packages in environment at /home/jul/Development/miniconda/envs/bird_dev:
#
...
pep8                      1.6.2                    py27_0  
pip                       7.1.2                    py27_0  
pixman                    0.26.2                        0  
...

但是当我试图查看 pip 使用了什么时,我得到了

(bird_dev)...$ which pip
/usr/local/bin/pip

当找到正确的python

(bird_dev)...$ which python
/home/jul/Development/miniconda/envs/bird_dev/bin/python

有人可以帮忙吗?

编辑:有关已安装版本的更多详细信息

检查哪个-a pip

(bird_dev)...$ which -a pip
/usr/local/bin/pip
/usr/bin/pip

/usr/bin/pip 的版本比较老了。

(bird_dev)...$ /usr/bin/pip -V
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)    
(bird_dev)....$ /usr/local/bin/pip -V
pip 6.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

env里其实没有pip

$ ll /home/jul/Development/miniconda/envs/bird_dev/bin/ | grep pip

什么都不返回

/home/jul/Development/miniconda/bin/pip 有一个点

$ /home/jul/Development/miniconda/bin/pip -V
pip 6.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)

但不是conda list列出的版本,是python脚本(!)

$ cat /home/jul/Development/miniconda/bin/pip
#!/home/jul/Development/miniconda/bin/python
if __name__ == '__main__':
    import sys
    from pip import main

    sys.exit(main())

编辑:回显 $PATH

(bird_dev)...$ echo $PATH
/home/jul/Development/miniconda/envs/bird_dev/bin:/home/jul/torch/install/bin:/home/jul/torch/install/bin:/home/jul/torch/install/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

编辑:尝试强制安装

(bird_dev)...$ conda install --force pip
Fetching package metadata: ....
Solving package specifications: .
Package plan for installation in environment /home/jul/Development/miniconda/envs/bird_dev:

The following packages will be UPDATED:

    pip: 7.1.2-py27_0 --> 7.1.2-py27_0

Proceed ([y]/n)? y

[      COMPLETE      ]|##################################################################################################################################################################################| 100%
Extracting packages ...
[      COMPLETE      ]|##################################################################################################################################################################################| 100%
Unlinking packages ...
[      COMPLETE      ]|##################################################################################################################################################################################| 100%
Linking packages ...
[      COMPLETE      ]|##################################################################################################################################################################################| 100%
(bird_dev)...$ which pip
/home/jul/Development/miniconda/envs/bird_dev/bin/pip
(bird_dev)...$ /home/jul/Development/miniconda/envs/bird_dev/bin/pip -V
pip 6.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
(bird_dev)...$ cat /home/jul/Development/miniconda/envs/bird_dev/bin/pip 
#!/home/jul/Development/miniconda/envs/bird_dev/bin/python
if __name__ == '__main__':
    import sys
    from pip import main

    sys.exit(main())

很奇怪。

【问题讨论】:

  • 可以加which -a pip吗?
  • 完成。更糟糕的是,我的系统中似乎有两个pip。
  • env 中的 pip 可以是符号链接吗?
  • 扫描整个路径时有多个pip 版本是很正常的。更令人惊讶的是,您的环境中的 pip 版本没有列出,尽管它确实应该列出。我会尝试conda install --force pip,然后再检查which pip。如果这没有帮助,您可以添加echo $PATH 的输出以进行进一步调试。
  • 我会检查是否设置了 PYTHONPATHPYTHONHOME 并尝试取消设置。这真的很奇怪,我的想法已经不多了。

标签: python pip conda


【解决方案1】:

您可能设置了PYTHONPATH。我建议取消设置它,并从~/.bashrc 中删除任何设置它的行。这将导致您的任何 conda 环境的 Python 先于自己查看该位置。

【讨论】:

  • 是的,我取消了 PYTHONPATH 并且它工作正常。请参阅我的问题对应的 cmets。
  • 我真的很想知道是否有使用 PYTHONPATH 和 python 环境的案例。 PYTHONPATH 隐藏在 bash 配置文件中,很容易忘记。当你在一个环境中并认为你是“孤立的”时,PYTHONPATH 是一条狡猾的蛇,它使 python 看起来在沙盒环境之外。
  • PYTHONPATH 很有用,例如,让 Python 从本地目录而不是安装的版本加载模块。问题在于将其永久设置在您的 bash 配置文件中,这会导致它全局影响所有 Python 可执行文件,这从根本上违背了隔离环境的想法。我建议只在命令行上使用 PYTHONPATH,然后,只在与您要运行的命令相同的行上(即不要导出它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 2021-07-25
相关资源
最近更新 更多