Python运行包没有安装

时间:2013-08-27 13:14:49

标签: python python-2.7

作为构建系统的一部分,我正在使用Python包的修改版本(cogapp)。我不想安装软件包,因为:

  1. 我修改了软件包,不想担心可能已经安装的未修改版本的冲突。
  2. 如果构建系统的用户不需要安装额外的软件包,那就更好了。
  3. 但是,如果没有安装,我在使用软件包时遇到问题。如果 安装,我可以运行:

    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(即不作为模块运行)找到了修复程序。在这种情况下,它并不太糟糕,因为它是一个只有一个目录的小包。但是我对将来应该怎么做感兴趣。围绕这个主题写了很多东西,但没有明确的答案!

1 个答案:

答案 0 :(得分:2)

这是我来的解决方案。

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

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