我已将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
在另一台具有相同配置的主机上,一切正常。我想念什么?为什么外壳程序选择错误的可执行文件?
更新(发现问题)
感谢@iBug向我指出type python
命令。经过一番思考后,我注意到我在远古时代遗留下来的/etc/profile
中有python的别名:
alias python='/usr/bin/python3'
答案 0 :(得分:0)
如果您使用的是Bash(我想是因为您用Bash标记了您的问题),则可以这样做:
hash -r
然后使用python -c "import sys; print(sys.executable)"
再试一次。
如果您想知道它在做什么,请尝试
type python
(注意:type
是内置的shell,而which
通常是独立程序)