我的生产服务器上的 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
- Biopython 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 或将其移动到其他位置。
关于python - Errno 13 Django 对我不想使用的目录的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147935/