Python导入混乱

时间:2011-01-15 19:33:20

标签: python import packages

导入模块时遇到了一个奇怪的问题。我有一个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()

尝试再次导入同一文件失败(因为包和文件具有相同的名称)。如何禁用查找同一目录?或者我如何强制导入首先查看全局包?

或者,这样做的“正确”方法是什么?为了保持一致性,我宁愿将我的启动脚本称为它正在尝试运行的实际包。

2 个答案:

答案 0 :(得分:2)

称它为pkgname。完成。好吧,如果你双击它,它就不会启动WIndows,但这通常不是问题。

答案 1 :(得分:0)

您可以修改sys.path。它只是一个搜索路径列表,当前文件夹应该是第一个条目。如果将当前文件夹移动到列表末尾,则应运行文件。但我总的来说,如果没有充分理由,我不会做那样的事情。是不是可以重命名你的文件name.py,runpkgname.py或类似的东西?