我有一个脚本可以加载安装在 virtualenv
from google.cloud import pubsub
当我像这样运行脚本时
(my_virtual_environment): python script.py
它有效。但是当我通过 gunicorn
gunicorn -c gunicorn_config.py script.py
我明白了
from google.cloud import pubsub
ImportError: No module named cloud
当我在两种情况下都打印 sys.path
时,我得到的是 sys.path
在一种情况下包含 virtualenv 路径
[......., /Users/partuck/.virtualenvs/my_virtual_environment/lib/python2.7/plat-darwin',......]
在另一种情况下(通过 gunicorn
运行),我没有看到它。 当运行 pip freeze
时,gunicorn
存在。
请您参考如下方法:
所以,事实证明 gunicorn 默认到它之前加载的位置。
我的解决办法是在目录下cd然后运行gunicorn
命令
cd my_directory
<loads the virtualenv> using auto env # workon my_virtualenv
gunicorn -c gunicorn_config.py script.py