Python运行包没有安装

作为构建系统的一部分,我使用的是
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时遇到的错误有关:

来自.cogapp import *

错误是:

    from .cogapp import *
ValueError: Attempted relative import in non-package

如何将包作为包运行?

编辑:

我找到了一个修复方法,删除了cogapp的所有相对导入,并删除了-m,即没有作为模块运行.在这种情况下,它并不太糟糕,因为它是一个只有一个目录的小包.但是我对将来应该怎么做感兴趣.围绕这个主题写了很多东西,但没有明确的答案!

最佳答案 这是我来的解决方案.

免责声明:您实际上是在安装软件包,但路径与标准路径不同.

$mkdir newhome
$python setup.py install --home=./newhome
$PYTHONPATH=$PWD/newhome/lib/python <COMMAND_NEEDING_THAT_PACKAGE>
点赞