Skip to content

Commit f7d3c94

Browse files
committed
Merge pull request kivy#529 from kived/fix-pymodules-install
fix pymodules install
2 parents e01767d + a42cf62 commit f7d3c94

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

pythonforandroid/build.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,17 @@ def get_libs_dir(self, arch):
470470
ensure_dir(join(self.libs_dir, arch))
471471
return join(self.libs_dir, arch)
472472

473+
def has_package(self, name, arch=None):
474+
site_packages_dir = self.get_site_packages_dir(arch)
475+
return (exists(join(site_packages_dir, name)) or
476+
exists(join(site_packages_dir, name + '.py')) or
477+
exists(join(site_packages_dir, name + '.pyc')) or
478+
exists(join(site_packages_dir, name + '.pyo')) or
479+
exists(join(site_packages_dir, name + '.so')))
480+
481+
def not_has_package(self, name, arch=None):
482+
return not self.has_package(name, arch)
483+
473484

474485
def build_recipes(build_order, python_modules, ctx):
475486
# Put recipes in correct build order
@@ -531,9 +542,12 @@ def build_recipes(build_order, python_modules, ctx):
531542

532543

533544
def run_pymodules_install(ctx, modules):
545+
modules = filter(ctx.not_has_package, modules)
546+
534547
if not modules:
535548
info('There are no Python modules to install, skipping')
536549
return
550+
537551
info('The requirements ({}) don\'t have recipes, attempting to install '
538552
'them with pip'.format(', '.join(modules)))
539553
info('If this fails, it may mean that the module has compiled '
@@ -556,8 +570,8 @@ def run_pymodules_install(ctx, modules):
556570
# This bash method is what old-p4a used
557571
# It works but should be replaced with something better
558572
shprint(sh.bash, '-c', (
559-
"source venv/bin/activate && env CC=/bin/false CXX=/bin/false"
560-
"PYTHONPATH= pip install --target '{}' -r requirements.txt"
573+
"source venv/bin/activate && env CC=/bin/false CXX=/bin/false "
574+
"PYTHONPATH={0} pip install --target '{0}' -r requirements.txt"
561575
).format(ctx.get_site_packages_dir()))
562576

563577

pythonforandroid/recipe.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ def should_build(self, arch):
643643
name = self.site_packages_name
644644
if name is None:
645645
name = self.name
646-
if exists(join(self.ctx.get_site_packages_dir(), name)):
646+
if self.ctx.has_package(name):
647647
info('Python package already exists in site-packages')
648648
return False
649649
info('{} apparently isn\'t already in site-packages'.format(name))

0 commit comments

Comments
 (0)