Ad *_*d N 18 python heroku virtualenv pythonpath
使用Heroku来部署我们的Django应用程序,除了heroku local:run命令之外,一切似乎都按规范工作.
我们经常需要通过Django的manage.py文件运行命令.在遥控器上运行它们,作为一次性dynos,完美无瑕地工作.要在本地运行它们,我们尝试:
heroku local:run python manage.py the_command
Run Code Online (Sandbox Code Playgroud)
尽管当前虚拟环境包含Django安装,但失败了
ImportError: No module named django.core.management
Run Code Online (Sandbox Code Playgroud)
然后heroku local:run which python返回:
/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
而which python回报:
/Users/myusername/MyProject/venv/bin/python #the correct value
Run Code Online (Sandbox Code Playgroud)
heroku local:run使用当前安装的虚拟环境?Ad *_*d N 11
在联系Heroku的支持后,我们理解了这个问题.
支持人员确认heroku local:run应按预期使用当前活动的虚拟环境.
问题是本地配置问题,由于我们的.bashrc内容:heroku local:run来源.bashrc(在我们的例子中,这是在$ PATH前面加上全局Python安装的路径,使其在虚拟环境之前找到).另一方面,heroku local不提供此文件.引用他们支持的最后一条消息:
heroku local:run在交互模式下使用bash运行命令,该模式读取你的配置文件,vs heroku local(别名为heroku local:start),它不以交互模式运行.