从同名的脚本导入Python包

11 浏览
0 Comments

从同名的脚本导入Python包

我正在尝试通过将脚本从包目录移动到顶级脚本目录来重新组织我的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已经作为egg安装到site-packages中,我们的虚拟环境已经正确激活。)

在具有相同名称的脚本my_package.py中如何导入包my_package

其他技术信息:

  • Python 2.7.3
  • Ubuntu Server 12.04 LTS
  • VirtualEnv 1.11.6
admin 更改状态以发布 2023年5月21日
0
0 Comments

你可能想要将my_package.py重命名,使用模块的核心脚本的规范名称:__main__.py,并将其放回到模块目录中。然后在你的setup.py文件中定义一个entry_point,以自动生成my_package可执行文件。
Chris Warrick的Python应用程序正确的方式:entry points和scripts深入探讨了这个主题。

还可以参考Stack Overflow的What is main.py?,了解自动设置的其他调用my_package的方式,如python -m my_package

0
0 Comments

对我来说,它可以使用

sys.path.insert(0, '..')

因为导入操作类似于for path in sys.path:

0