当一个python脚本应该从pyenv virtualenv运行时,该文件的正确shebang是什么?
作为示例测试用例,我系统上的默认python(OSX)没有安装pandas. pyenv virtualenv venv_name确实如此.我尝试从virtualenv获取python可执行文件的路径.
$pyenv activate venv_name
(venv_name)$which python
/Users/username/.pyenv/shims/python
所以我创建了我的示例script.py:
#!/Users/username/.pyenv/shims/python
import pandas as pd
print 'success'
但是当我尝试运行脚本时,我收到了一个错误:
(venv_name) $./script.py
./script.py: line 2: import: command not found
./script.py: line 3: print: command not found
虽然在命令行上运行该路径工作正常:
(venv_name) $/Users/username/.pyenv/shims/python script.py
success
(venv_name) $python script.py # also works
success
什么是适当的shebang为此?理想情况下,我想要一些通用的东西,以便它指向我目前的venv所在的python.
解决方法:
我真的不知道为什么用完整路径调用解释器对你不起作用,我一直使用它,但如果你想使用你环境中的python解释器,你应该这样做:
#!/usr/bin/env python
这样您就可以在环境中搜索要使用的python解释器.