2016-08-25 2 views
2

を使用したくないディレクトリにジャンゴと拒否された:ERRNO 13パーミッションは私が私の本番サーバー上で私のDjangoのアプリで表示されるこのエラーを持っている

[ERRNO 13]許可が拒否されました:「は/ var/www/.config '

私のコードでは、このファイルまたはディレクトリにアクセスすることはありませんでした。サーバーは私のhttpd.confで定義されている別のディレクトリで動作していますが、/var/www/要素のDjango設定での使用は定義されていません。

私の場合は、ジャンゴとbiopythonライブラリを使用しています:

from Bio import Entrez 

Entrez.email = "[email protected]" 

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
+0

完全なエラーは何を指していますか?誰がそれにアクセスしようとしていますか? – Sayse

答えて

2

を助けることができる

希望、Entrez.parseするDataHandlerオブジェクトを呼び出しています。このオブジェクトはのようなものを使用してユーザーディレクトリに書き込みをしてみてください:biopythonユーザーはhttpdのユーザーなので

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) 

、ホームディレクトリは、の/ var/www /のです。

ソリューションはapacheのの/ var/WWWに書き込むか、別の場所に移動できるようにするためにここにあります。

+0

良い答え、+1。私はソースを見ているだけで、この動作を外部的にオーバーライドする方法はありません。つまり、 'Bio.Entrez.Parser import DataHandlerから'を実行することはできません。 DataHandler.local_storage_dir = "/ tmp/biopython"またはそれに類するものです。私はバグを報告すると思う。 – MattDMo

+0

興味のある方は、Githubの[この号](https://github.com/biopython/biopython/issues/918)をご覧ください。 – MattDMo

+0

別の場所に移動するとどういう意味ですか? – Cheluis

1

サーバを再起動しますかジャンゴのサービスを再起動します。
重要なのは、バックグラウンドのサービスが設定の新しい場所を知る必要があるためです。
ライブラリが実際の設定をロードしていて、バックグラウンドサービスが古いものを使用しているので、Pythonで動作すると思います。私は事実では

関連する問題