TL;DR
https://qrunch.net/@sugurunatsuno/entries/wF9aXWZ3x3PBarLR
PYTHONPATHに読み込みたいpydファイルがあるディレクトリを追加する。
はじめに
IISを使ってDjangoのプロジェクトを実行したときにpydファイルが読み込めなくなった。
結果として環境変数のPYTHONPATHにpydファイルを参照できるディレクトリがなかったことが原因であった。
Djangoのrunserverでの実行時にはpydファイルがインポートできていた。
IISではpydファイルのインポート以外に関しては動作する前提。
バージョン
OS/ソフトウェア/ライブラリ名 | バージョン |
---|---|
Windows | 10 |
IIS | 10 |
Python | 3.8.0 |
Django | 2.2.8 |
Cython | 0.29.15 |
IISで設定する場合
IISかPythonのどちらかで設定できればよい。
IISではweb.configなどで環境変数を設定できる。
セミコロンで区切って複数のパスを設定できるので、pydファイルがあるパスを追加する。
<add key="PYTHONPATH" value="project_path;pyd_absolute_path" />
この場合のpydファイルのインポートはPYTHONPATHを参照するため、呼び出すpyファイルからの相対パスにならない。
# 相対パスで参照できない
# from pyd_relative_path import target
# PYTHONPATHに設定しているためそのまま呼び出せる
import target
Python上で設定する場合
IISかPythonのどちらかで設定できればよい。
python上でも環境変数は設定できるので、pydファイルがあるディレクトリを設定できる。
import os
import sys
current_dir = os.path.abspath(os.path.dirname(__file__))
sys.path += [os.path.join(current_dir, 'pyd_relative_path')]
import target