提交 15725e30 authored 作者: lamblin's avatar lamblin

Merge pull request #983 from nouiz/import

Import
...@@ -7,21 +7,26 @@ from theano.gof import cmodule ...@@ -7,21 +7,26 @@ from theano.gof import cmodule
_logger = logging.getLogger('theano.gof.lazylinker_c') _logger = logging.getLogger('theano.gof.lazylinker_c')
# Ensure the compiledir is in `sys.path` to be able to reload an existing
# precompiled library.
if config.compiledir not in sys.path:
sys.path.append(config.compiledir)
force_compile = False force_compile = False
version = 0.20 # must match constant returned in function get_version() version = 0.20 # must match constant returned in function get_version()
def try_import():
global lazylinker_ext
sys.path[0:0] = [config.compiledir]
import lazylinker_ext
del sys.path[0]
def try_reload():
sys.path[0:0] = [config.compiledir]
reload(lazylinker_ext)
del sys.path[0]
try: try:
_need_reload = False _need_reload = False
if force_compile: if force_compile:
raise ImportError() raise ImportError()
else: else:
import lazylinker_ext try_import()
_need_reload = True _need_reload = True
if version != getattr(lazylinker_ext, '_version', None): if version != getattr(lazylinker_ext, '_version', None):
raise ImportError() raise ImportError()
...@@ -36,9 +41,9 @@ except ImportError: ...@@ -36,9 +41,9 @@ except ImportError:
if _need_reload: if _need_reload:
# The module was successfully imported earlier: we need to # The module was successfully imported earlier: we need to
# reload it to check if the version was updated. # reload it to check if the version was updated.
reload(lazylinker_ext) try_reload()
else: else:
import lazylinker_ext try_import()
_need_reload = True _need_reload = True
if version != getattr(lazylinker_ext, '_version', None): if version != getattr(lazylinker_ext, '_version', None):
raise ImportError() raise ImportError()
...@@ -65,8 +70,8 @@ except ImportError: ...@@ -65,8 +70,8 @@ except ImportError:
init_pyc = os.path.join(loc, '__init__.pyc') init_pyc = os.path.join(loc, '__init__.pyc')
if os.path.isfile(init_pyc): if os.path.isfile(init_pyc):
os.remove(init_pyc) os.remove(init_pyc)
import lazylinker_ext try_import()
reload(lazylinker_ext) try_reload()
from lazylinker_ext import lazylinker_ext as lazy_c from lazylinker_ext import lazylinker_ext as lazy_c
assert (lazylinker_ext._version == assert (lazylinker_ext._version ==
lazy_c.get_version()) lazy_c.get_version())
......
...@@ -18,8 +18,8 @@ if [ "$1" == "--buildbot" ]; then ...@@ -18,8 +18,8 @@ if [ "$1" == "--buildbot" ]; then
FLAGS=compiledir=$COMPILEDIR FLAGS=compiledir=$COMPILEDIR
cd ${ROOT_CWD}/Theano cd ${ROOT_CWD}/Theano
git rev-parse HEAD git rev-parse HEAD
cd .. #Run tests from inside the Theano directory to prevent import problem.
ARGS="Theano" ARGS=""
PROFILING="--with-coverage --cover-package=theano" PROFILING="--with-coverage --cover-package=theano"
NOSETESTS=${ROOT_CWD}/Theano/bin/theano-nose NOSETESTS=${ROOT_CWD}/Theano/bin/theano-nose
export PYTHONPATH=${ROOT_CWD}:$PYTHONPATH export PYTHONPATH=${ROOT_CWD}:$PYTHONPATH
......
...@@ -107,9 +107,9 @@ def try_import(): ...@@ -107,9 +107,9 @@ def try_import():
try: try:
# If we load a previously-compiled version, config.compiledir should # If we load a previously-compiled version, config.compiledir should
# be in sys.path. # be in sys.path.
if config.compiledir not in sys.path: sys.path[0:0] = [config.compiledir]
sys.path.append(config.compiledir)
import cuda_ndarray.cuda_ndarray import cuda_ndarray.cuda_ndarray
del sys.path[0]
except ImportError: except ImportError:
return False return False
return True return True
......
...@@ -12,16 +12,25 @@ _logger = logging.getLogger('theano.scan_module.scan_perform') ...@@ -12,16 +12,25 @@ _logger = logging.getLogger('theano.scan_module.scan_perform')
_logger.setLevel(logging.WARN) _logger.setLevel(logging.WARN)
# Ensure the compiledir is in `sys.path` to be able to reload an existing
# precompiled library.
if config.compiledir not in sys.path:
sys.path.append(config.compiledir)
version = 0.278 # must match constant returned in function get_version() version = 0.278 # must match constant returned in function get_version()
need_reload = False need_reload = False
try:
def try_import():
global scan_perform
sys.path[0:0] = [config.compiledir]
import scan_perform import scan_perform
del sys.path[0]
def try_reload():
sys.path[0:0] = [config.compiledir]
reload(scan_perform)
del sys.path[0]
try:
try_import()
need_reload = True need_reload = True
if version != getattr(scan_perform, '_version', None): if version != getattr(scan_perform, '_version', None):
raise ImportError() raise ImportError()
...@@ -34,9 +43,9 @@ except ImportError: ...@@ -34,9 +43,9 @@ except ImportError:
if need_reload: if need_reload:
# The module was successfully imported earlier: we need to # The module was successfully imported earlier: we need to
# reload it to check if the version was updated. # reload it to check if the version was updated.
reload(scan_perform) try_reload()
else: else:
import scan_perform try_import()
need_reload = True need_reload = True
if version != getattr(scan_perform, '_version', None): if version != getattr(scan_perform, '_version', None):
raise ImportError() raise ImportError()
...@@ -66,8 +75,9 @@ except ImportError: ...@@ -66,8 +75,9 @@ except ImportError:
init_pyc = os.path.join(loc, '__init__.pyc') init_pyc = os.path.join(loc, '__init__.pyc')
if os.path.isfile(init_pyc): if os.path.isfile(init_pyc):
os.remove(init_pyc) os.remove(init_pyc)
import scan_perform try_import()
reload(scan_perform)
try_reload()
from scan_perform import scan_perform as scan_c from scan_perform import scan_perform as scan_c
assert (scan_perform._version == assert (scan_perform._version ==
scan_c.get_version()) scan_c.get_version())
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论