【发布时间】:2011-01-15 19:33:20
【问题描述】:
我在导入模块时遇到了一个奇怪的问题。我有一个 virtualenv 设置,{env}/lib/python2.6/site-packages/pkgname 中有一个模块可用。里面有一个__init__.py文件和pkgname.py。
现在,如果我运行{env}/bin/python 并执行import pkgname.pkgname,它就可以正常工作。但是如果我在{env}/bin/pkgname.py 中创建一个脚本,其内容为:
#!{env}/bin/python
import pkgname.pkgname
if __name__ == "__main__":
pkgname.pkgname.run()
尝试再次导入相同的文件失败(因为包和文件具有相同的名称)。如何禁用在同一目录中查找?或者如何强制导入首先查看全局包?
或者,这样做的“正确”方式是什么?只是为了保持一致性,我宁愿将我的启动脚本称为与其尝试运行的实际包相同的名称。
【问题讨论】:
-
这就是为什么我们不对公共目录中的可执行文件进行扩展。