【发布时间】:2014-08-20 01:52:26
【问题描述】:
我正在尝试通过将脚本从包目录移动到顶级脚本目录来重新组织我的 Python 项目。在这些更改之后,这就是我的项目层次结构的样子:
MyProject/
setup.py
scripts/
my_package.py
my_package/
__init__.py
module_foo.py
请注意脚本和包如何具有相同的名称。
脚本my_package.py 看起来像这样:
# MyProject/scripts/my_package.py
import os
try:
import my_package
print os.path.abspath(my_package.__file__)
except ImportError as e:
print e
当我们运行上述脚本时,解释器会导入当前模块而不是同名的包(注意:包my_package已经安装到site-packages 作为鸡蛋,我们的虚拟环境已正确激活。)
如果 包 my_package 从 script my_package.py 中导入它们具有相同的名称,我该如何?
其他技术信息:
- Python 2.7.3
- Ubuntu 服务器 12.04 LTS
- 虚拟环境 1.11.6
【问题讨论】:
-
更改脚本名称 - 这是最简单的解决方案。
-
你在调用
import my_package之前尝试添加os.path.append("..") -
@furas 重命名脚本真的是我唯一的选择吗?根据我对“绝对导入”功能的了解,我使用的导入语法应该有效。
-
@user8708 我试过 sys.path.append('..') 没有运气。
-
@AlfaZulu 你的
my_package应该在scripts内以覆盖路径
标签: python