Python运行包无需安装

标签 python python-2.7

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

  1. 我已经修改了包,不想担心与可能已经安装的未修改版本发生冲突。
  2. 如果构建系统的用户不需要安装额外的包就更好了。

但是,如果未安装该软件包,我在使用时会遇到问题。如果它已安装,我可以运行:

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,即不作为模块运行。在这个例子中,它还算不错,因为它是一个只有一个目录的小包。但是我对将来应该如何完成感兴趣。围绕这个主题写了很多东西,但没有明确的答案!

最佳答案

这是我得出的解决方案。

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

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

关于Python运行包无需安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18466528/

相关文章:

python-2.7 - Python 2.7 默认情况下是否将错误写入日志文件?

python - 给定条件递增前 n 个列表元素

windows - 在 Python 的子进程中使用 Windows 路径(指向可执行文件)

python - 在 css 中使用 Django 数字变量

python - 使用 Tkinter 集成图片

python - 如何组合 WebDriver find_elements_by* 调用,同时跟踪结果的顺序?

python - 转义 re.sub 的 repl 参数

python - numpy 特征值的精度

python - 如何基于IOC脚本编写YARA规则?

python - NumPy 数组可以有值的元组吗?