我在virtualenv中有一个Flask应用程序,它使用python3.6在Apache2上运行得很好,除了它无法导入存储静态变量的python文件(constants.py
)之外。我的操作系统是Ubuntu 18.04。
现在,constants.py
从/home/<user>/.local/lib/python3.7/site-packages/constants.py
符号链接。 Python 3.7是我的默认python3。我将其用于所有其他项目,并且从未遇到过从该位置与其他virtualenvs进行符号链接的问题。这个Flask应用程序是我第一次使用3.6,因此我倾向于认为像这样的交叉版本是问题的一部分。
该应用程序使用以下python解释器:/home/<user>/sample_app/sample_app/venv/bin/python3.6
。激活该虚拟电话后,我可以import constants
没有问题。另外,当我列出/home/<user>/sample_app/sample_app/venv/lib/python3.6/site-packages
的内容时,该文件也存在。
不确定这是否很重要,但是我可以从终端运行该应用程序,并且看到所需的* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
。
我可以肯定地说该应用程序正在正确激活venv。
来自error.log:
mod_wsgi (pid=15792): Target WSGI script '/home/<user>/sample_app/sample_app/my_flask_app.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=15792): Exception occurred processing WSGI script '/home/<user>/sample_app/sample_app/my_flask_app.wsgi'.
Traceback (most recent call last):
File "/home/<user>/sample_app/sample_app/my_flask_app.wsgi", line 17, in <module>
from ts_lineage import app as application
File "/home/<user>/sample_app/sample_app/my_flask_app.py", line 10, in <module>
import constants
ModuleNotFoundError: No module named 'constants'
来自my_flask_app.wsgi:
#!/usr/bin/python3
activate_this = '/home/<user>/sample_app/sample_app/venv/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import logging
import sys
logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, '/home/<user>/sample_app/sample_app/')
from my_flask_app import app as application
application.secret_key = 'secret key'
来自my_flask_app.py:
#!/home/<user>/sample_app/sample_app/venv/bin/python3.6
from flask import Flask
import pandas as pd
from flask_jsonpify import jsonify
import constants # Works if I remove this line!
app = Flask(__name__)
@app.route('/')
def get():
<my code here>
if __name__ == '__main__':
app.run()
那里有什么主意吗?