9

とりわけ、データベースにクエリを実行し、データを使用して Excel スプレッドシートを作成する Web アプリケーションがあります。ファイルをクライアント マシンに送信する前に、スプレッドシートをサーバーのディスクに保存する必要があります。Flask フレームワークと openpyxl を使用してスプレッドシートを生成しています。Flask の開発サーバーで実行するとすべて正常に動作しますが、実際のサーバーは WSGI を使用した Apache2 です。そこで実行すると、スプレッドシートを保存しようとすると「許可が拒否されました」というエラーが発生します。Apache/WSGI で実行するときの Python の作業ディレクトリがわかりません。

おそらくWSGI構成ファイルで、作業ディレクトリを変更したり、保存先を制御したりする方法はありますか? 可能であれば、保存に相対パスを使用したいと思います (コードの移植性が向上します)。そのため、作業ディレクトリを変更することが最善の解決策です。

4

2 に答える 2

24

作業ディレクトリは変更しないでください。

使用する:

import os
here = os.path.dirname(__file__)

変数hereには、そのコードファイルが配置されているディレクトリが含まれます。次に、それに関連するものの絶対パスを作成できます。

database = os.path.join(here, 'database.db')

コードを実行するユーザーがApacheで実行されている場合でも、そのディレクトリへの読み取り/書き込みアクセス権が必要であることに注意してください。

いつものように、必ずドキュメントを読んでください。ドキュメントの関連セクションは次のとおりです。

于 2012-08-23T01:12:55.003 に答える