【问题标题】:Shell selects wrong python executable in virtualenvShell 在 vi​​rtualenv 中选择了错误的 python 可执行文件
【发布时间】:2018-12-18 10:23:05
【问题描述】:

我已经将virtualenv添加到现有项目中,无法理解奇迹:

dev:/www/development$ echo $PATH
/usr/local/bin:/usr/bin:/bin
dev:/www/development$ python -c "import sys; print(sys.executable)"
/usr/bin/python3
dev:/www/development$ source env/bin/activate
(env) dev:/www/development$ echo $PATH
/www/development/env/bin:/usr/local/bin:/usr/bin:/bin
(env) dev:/www/development$ python -c "import sys; print(sys.executable)"
/usr/bin/python3
(env) dev:/www/development$ /usr/bin/env python -c "import sys; print(sys.executable)"
/www/development/env/bin/python
(env) dev:/www/development$ which python
/www/development/env/bin/python
...
(env) dev:/www/development$ hash -r
(env) dev:/www/development$ python -c "import sys; print(sys.executable)"
/usr/bin/python3
(env) dev:/www/development$ hash
hash: hash table empty
(env) dev:/www/development$ type python
python is aliased to `/usr/bin/python3'
(env) dev:/www/development$ man python
(env) dev:/www/development$ hash
hits    command
   1    /usr/bin/man

在具有相同配置的另一台主机上,一切都按预期工作。我错过了什么?为什么shell选择错误的可执行文件?

更新(发现问题)

感谢@iBug 向我指出type python 命令。经过一番思考,我注意到我在/etc/profile 中有python 的别名,从很久以前就留在那里了:

alias python='/usr/bin/python3'

【问题讨论】:

    标签: python bash virtualenv


    【解决方案1】:

    如果您使用的是 Bash(我想是因为您使用 Bash 标记了您的问题),那么可以这样做:

    hash -r
    

    然后用python -c "import sys; print(sys.executable)"重试。


    如果您想知道它在做什么,请尝试

    type python
    

    (注意:type 是内置的 shell,而 which 通常是独立程序)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-01
      • 2018-11-08
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多