作为构建系统的一部分,我正在使用Python包的修改版本(cogapp)。我不想安装软件包,因为:
但是,如果没有安装,我在使用软件包时遇到问题。如果 安装,我可以运行:
python -m cogapp <additional args>
一切都按预期运行。
该软件包有一个__main__.py
脚本:
import sys
from cogapp import Cog
sys.exit(Cog().main(sys.argv))
我尝试直接运行它,例如:
python -m <path>/__main__ <additional_args>
但我收到错误:
...
/__main__.py", line 3, in <module>
from cogapp import Cog
ImportError: No module named cogapp
这可能与我运行__init__.py
时出现的错误有关:
from .cogapp import *
错误是:
from .cogapp import *
ValueError: Attempted relative import in non-package
如何将软件包作为包运行?
修改:
我通过从cogapp
删除所有相对导入并删除-m(即不作为模块运行)找到了修复程序。在这种情况下,它并不太糟糕,因为它是一个只有一个目录的小包。但是我对将来应该怎么做感兴趣。围绕这个主题写了很多东西,但没有明确的答案!
答案 0 :(得分:2)
这是我来的解决方案。
免责声明:您实际上是在安装软件包,但路径与标准路径不同。
$ mkdir newhome
$ python setup.py install --home=./newhome
$ PYTHONPATH=$PWD/newhome/lib/python <COMMAND_NEEDING_THAT_PACKAGE>