LoginSignup
0
0

More than 3 years have passed since last update.

IISでDjangoプロジェクトにあるpydファイルがインポートできない問題への対応

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0