Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure pip is installed #22

Merged
merged 9 commits into from
May 6, 2021
2 changes: 1 addition & 1 deletion bip/t3dn_bip/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'''Load image previews in parallel and in any resolution. Supports BIP files.'''

__version__ = '0.1.0'
__version__ = '0.1.1'
19 changes: 8 additions & 11 deletions bip/t3dn_bip/ops.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import bpy
from .utils import support_pillow, install_pillow
from .utils import install_pillow


class InstallPillow:
Expand All @@ -10,19 +10,16 @@ class InstallPillow:
- Make sure to set bl_idname, it must be unique.
'''
bl_label = 'Install Pillow'
bl_description = 'Install the Python Imaging Library'
bl_description = '.\n'.join((
'Install the Python Imaging Library',
'This could take a few minutes',
))
bl_options = {'REGISTER', 'INTERNAL'}

def execute(self: bpy.types.Operator, context: bpy.types.Context) -> set:
if support_pillow():
self.report({'INFO'}, 'Pillow is already installed')
return {'CANCELLED'}
else:
install_pillow()

if support_pillow():
if install_pillow():
self.report({'INFO'}, 'Pillow was installed successfully')
return {'FINISHED'}
else:
self.report({'WARNING'}, 'Pillow failed to install')
return {'CANCELLED'}

return {'FINISHED'}
32 changes: 22 additions & 10 deletions bip/t3dn_bip/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,33 @@ def support_pillow() -> bool:
return bool(Image)


def install_pillow():
def install_pillow() -> bool:
'''Install Pillow and import the Image module.'''
args = [sys.executable, '-m', 'pip', 'install', '--user', 'Pillow']
command = [sys.executable, '-m', 'ensurepip']
options = ['--user', '--upgrade', '--default-pip']

if not subprocess.call(args=args, timeout=60):
path = Path(USER_SITE).joinpath('PIL', '__init__.py')
if subprocess.call(args=command + options, timeout=60 * 10):
return False

spec = importlib.util.spec_from_file_location('PIL', path)
module = importlib.util.module_from_spec(spec)
command = [sys.executable, '-m', 'pip']
options = ['install', '--user', '--upgrade', 'Pillow']

sys.modules[module.__name__] = module
spec.loader.exec_module(module)
if subprocess.call(args=command + options, timeout=60 * 10):
return False

global Image
from PIL import Image
name = 'PIL'
path = Path(USER_SITE).joinpath(name, '__init__.py')

spec = importlib.util.spec_from_file_location(name, path)
module = importlib.util.module_from_spec(spec)

sys.modules[module.__name__] = module
spec.loader.exec_module(module)

global Image
from PIL import Image

return True


def can_load(filepath: str) -> bool:
Expand Down
2 changes: 1 addition & 1 deletion bip_converter/t3dn_bip_converter/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
'''Convert between BIP files and various image formats.'''

__version__ = '0.1.0'
__version__ = '0.1.1'
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/00.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/01.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/02.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/03.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/04.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/05.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/06.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/07.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/08.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/09.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/10.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/11.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/12.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/13.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/14.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/15.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/16.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/17.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/18.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/19.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/20.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/21.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/22.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/23.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/24.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/25.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/26.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/27.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/28.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/29.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/30.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/31.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/32.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/33.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/34.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/35.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/36.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/37.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/38.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/39.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/40.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/41.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/42.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/43.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/44.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/45.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/46.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/47.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/48.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/49.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/50.bip
Git LFS file not shown
4 changes: 2 additions & 2 deletions example/t3dn_bip_example/images/bip/51.bip
Git LFS file not shown
Loading