たれながし.info

とあるITエンジニアの備忘録

Pythonでzipからパッケージをimportする方法

Pythonでzipファイルに圧縮したパッケージからimportする方法です。

はじめに

「パッケージ zip import」でググると、以前はすぐに見つかったのですが、最近はググっても全然見つからなくて困るので自分用にメモする。
ちなみに、私はパッケージ/モジュールの違いがよく分かってないです。

動作確認環境

  • Windows10 64bit
  • Python3.9

基本的にはOS関係なく動くが、パッケージにOSプラットフォームに依存するファイル(バイナリファイルなど)が含まれる場合、zipファイルを作った環境と実行する環境でOSプラットフォームが異なると動かなかったりする(らしい)。

実施

例として、zipから「beautifulsoup4」をインポートしてみる。

zipファイルの作成

・フォルダを作成
md library

・パッケージをインストール
pip3 install beautifulsoup4 -t library

・パッケージをzip化
powershell Compress-Archive -Path library\* -DestinationPath library.zip

・zipファイルの中身を確認
explorer library.zip

パッケージのimport

下記をソースコードの先頭に書くと「library.zip」内のパッケージをimportしてくれる。

# -*- coding: utf-8 -*-
import os, sys

basepath = os.path.split(os.path.realpath(__file__))[0]
sys.path.insert(0, os.path.join(basepath, 'library.zip'))

import requests
from bs4 import BeautifulSoup