【发布时间】:2021-04-19 07:23:17
【问题描述】:
我在 apache 服务器上部署了一个带有 mod wsgi 的 django 项目。到目前为止一切正常。 在一个 python 脚本中,我想在静态文件中打开一个文件。
因此我尝试了这样的事情:
mycode.py
import cv2
class Foo():
def __init__(self):
...
def openImg(self):
self.myimg = cv2.imread('static/myapp/img/picture.jpg',0)
return self.myimg
.. 只是为了测试
但是它找不到这个文件。
无论是在路径中('static/myapp/img/picture.jpg'),还是在路径中('myapp/static/myapp/img/picture.jpg')还是在路径中('../static/myapp/img /picture.jpg') 和其他一些我已经忘记了。
它总是返回“无”。
如果我在“未部署”的本地项目上尝试相同的操作,它可以正常工作。
我已经将所有静态文件收集到 /myproject/static 并授予足够的权限来访问它们。
顺便说一句,对 html 中的静态文件的访问在生产环境中工作。
有什么问题? 你能给我什么建议吗?
谢谢。
一些附加信息:
views.py
from django.shortcuts import render
from .mycode import Foo
def index(request):
# New Instance for class Foo
bar = Foo()
# Return img array to put it in html for whatever
imagearray = bar.openImg()
context = {'imgarray': imgarray}
return render(request, 'myapp/index.html', context)
这是我的目录的一个例子
/home/myuser/MyProject
/static/myapp/img/picture.jpg (collected)
/
/myapp
/static/myapp/img/picture.jpg
/mycode.py
/views.py
/MyProject
/settings.py
在我的 apache 配置文件中:
Alias /static /home/myuser/MyProject/static
<Directory /home/myuser/MyProject/static>
Require all granted
</Directory>
Alias /media /home/myuser/MyProject/media
<Directory /home/myuser/MyProject/media>
Require all granted
</Directory>
<Directory /home/myuser/MyProject/MyProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /home/myuser/MyProject/MyProject/wsgi.py
WSGIDaemonProcess django_app python-path=/home/myuser/MyProject python-home=/home/myuser/MyProject/venv
WSGIProcessGroup django_app
【问题讨论】:
标签: python django apache static mod-wsgi