在Python中覆盖名称空间
假设有一个文件夹“ / home / user / temp/a40bd22344”。名称是完全随机的,并且在每次迭代中都会更改。我需要能够使用固定名称(例如“
project”)在Python中导入此文件夹。我知道我可以将此文件夹添加到sys.path中以启用导入查找,但是有没有一种方法可以将“a40bd22344”替换为“项目”?
也许 init .py有一些聪明的技巧?
添加:
它必须是全局的-也就是说,其他脚本通过该标准加载“项目”:
import project
必须正常工作,而是加载a40bd22344。
-
你先用导入 进口 :
>>> __import__('temp/a40bd22344') <module 'temp/a40bd22344' from 'temp/a40bd22344/__init__.py'>
然后,确保该模块被Python识别为
project
:>>> import sys >>> sys.modules['project'] = sys.modules.pop('temp/a40bd22344')
之后,当前Python会话中的任何导入项目都将获得原始模块
>>> import project >>> project <module 'temp/a40bd22344' from 'temp/a40bd22344/__init__.py'>
这也适用于子模块:如果在同一位置有foobar.py,则将获得
>>> import project.foobar >>> project.foobar <module 'project.foobar' from 'temp/a40bd22344/foobar.py'>
附录。 这是我正在运行的:
>>> print sys.version 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]