从同名的脚本导入Python包
从同名的脚本导入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日
你可能想要将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
。