在Python中从与可执行文件同名的模块导入
我有一个可执行的文件,叫做,比如说,resource.py
。这个文件放在一个叫做resource
的文件夹里。因为这是一个老产品,用户已经习惯了这个命名,所以我不想改文件名或文件夹名。在旧版本中,它是在另一个项目下,所以导入的时候用的是import main_product.resource.<..>
。
现在我需要用import resource.<..>
和__import__('resource.<..>', ...)
来导入。但是当我尝试这样做时,我得到了一个预期的错误,因为Python会优先从resource.py
这个文件中导入。
这里有一些建议的解决方案:
- 从
sys.path
中移除当前文件夹的路径:- 这需要在文件开头加一段很丑的代码;
- 在这个文件夹里就不能使用相对导入了;
- 把文件夹路径放在
sys.path
列表的最后:- 这需要在文件开头加一段更大的丑陋代码;
- 我不确定这个方法是否总是能完美工作。
有没有什么可用的主意呢?
附注:Python v2.6,FreeBSD 7.3
1 个回答
1
使用 imp.find_module()
和 imp.load_module()
。
find_module
让你可以指定自己的路径来进行搜索。