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