我在生产服务器上的 Django 应用程序中出现此错误:
[Errno 13] Permission denied: '/var/www/.config'
我从未在我的代码中要求访问这个不存在的文件或目录。服务器在我的 httpd.conf 中定义的不同目录中运行,我没有在我的 Django 设置中定义任何 /var/www/ 元素的使用。
在我的例子中,我将 biopython 库与 Django 一起使用:
from Bio import Entrez
Entrez.email = "my@email"
handle = Entrez.efetch("taxonomy", id="123, 1")
records = Entrez.parse(handle)
此代码在服务器上的 python 控制台中运行。但指令 Entrez.parse(handle) 在 Django 环境中返回错误。
我在函数的源代码中没有看到任何指令要求编写或打开任何东西,所以它似乎是 Django 的问题?
是配置问题吗?当我调用特定函数时,后台 Django 函数试图访问文件?
我的配置:
- python 3.3
- Django 1.8
- 生物蟒 1.67
请您参考如下方法:
事实上,Entrez.parse 正在调用DataHandler 对象。此对象尝试在用户目录中写入类似以下内容:
home = os.path.expanduser('~')
directory = os.path.join(home, '.config', 'biopython')
local_xsd_dir = os.path.join(directory, 'Bio', 'Entrez', 'XSDs')
os.makedirs(local_xsd_dir)
因为biopython用户是httpd用户,所以主目录是/var/www/。
这里的解决方案是允许apache 写入/var/www 或将其移动到不同的地方。
