提交 f895fcd6 authored 作者: Frederic's avatar Frederic

Always remove what we add from sys.path.

fix gh-915. But this don't fix the theano-nose import problem when outside the Theano dir.
上级 b853036e
......@@ -7,21 +7,26 @@ from theano.gof import cmodule
_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
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:
_need_reload = False
if force_compile:
raise ImportError()
else:
import lazylinker_ext
try_import()
_need_reload = True
if version != getattr(lazylinker_ext, '_version', None):
raise ImportError()
......@@ -36,9 +41,9 @@ except ImportError:
if _need_reload:
# The module was successfully imported earlier: we need to
# reload it to check if the version was updated.
reload(lazylinker_ext)
try_reload()
else:
import lazylinker_ext
try_import()
_need_reload = True
if version != getattr(lazylinker_ext, '_version', None):
raise ImportError()
......@@ -65,8 +70,8 @@ except ImportError:
init_pyc = os.path.join(loc, '__init__.pyc')
if os.path.isfile(init_pyc):
os.remove(init_pyc)
import lazylinker_ext
reload(lazylinker_ext)
try_import()
try_reload()
from lazylinker_ext import lazylinker_ext as lazy_c
assert (lazylinker_ext._version ==
lazy_c.get_version())
......
......@@ -107,9 +107,9 @@ def try_import():
try:
# If we load a previously-compiled version, config.compiledir should
# be in sys.path.
if config.compiledir not in sys.path:
sys.path.append(config.compiledir)
sys.path[0:0] = [config.compiledir]
import cuda_ndarray.cuda_ndarray
del sys.path[0]
except ImportError:
return False
return True
......
......@@ -12,16 +12,24 @@ _logger = logging.getLogger('theano.scan_module.scan_perform')
_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()
need_reload = False
try:
def try_import():
sys.path[0:0] = [config.compiledir]
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
if version != getattr(scan_perform, '_version', None):
raise ImportError()
......@@ -34,9 +42,9 @@ except ImportError:
if need_reload:
# The module was successfully imported earlier: we need to
# reload it to check if the version was updated.
reload(scan_perform)
try_reload()
else:
import scan_perform
try_import()
need_reload = True
if version != getattr(scan_perform, '_version', None):
raise ImportError()
......@@ -66,8 +74,9 @@ except ImportError:
init_pyc = os.path.join(loc, '__init__.pyc')
if os.path.isfile(init_pyc):
os.remove(init_pyc)
import scan_perform
reload(scan_perform)
try_import()
try_reload()
from scan_perform import scan_perform as scan_c
assert (scan_perform._version ==
scan_c.get_version())
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论