从内部包中调用函数

Calling functions from internal packages

我通过分离不同的功能来组织我的项目,但不知道如何在我创建的部分之间进行通信。

我正在尝试通过包含此导入语句

来访问 addMetrics.pyrun_perf.py 的函数
from analysis import run_perf
...
runtime = run_perf.calcMs()

不断收到 ModuleNotFoundError: 没有名为 'analysis' 的模块,但不知道如何修复它。

项目结构:

myApplication/
│
├── bin/
│
├── myApplication/
│   ├── __init__.py
│   ├── runner.py
│   ├── analysis/
│   │   ├── __init__.py
│   │   ├── run_perf.py
│   │   └── mem_perf.py
│   │
│   └── conversion/
│       ├── __init__.py
│       ├── convert.py
│       └── addMetrics.py
│
├── .gitignore
├── LICENSE
└── README.md

(如果值得注意,我的 __init__.py 文件目前也是空的)

from myApplication.analysis import run_perf

注意包名myApplication违反了PEP8规则。

收到一条解决问题的非常有用的消息!

I’m trying to access functions from run_perf.py in addMetrics.py by
including this import statement

from analysis import run_perf
...
runtime = run_perf.calcMs()

I keep getting ModuleNotFoundError: No module named ‘analysis’ but don’t know what about my import is wrong.

也就是说Python无法对“分析”包进行fine。 Python长相 在 sys.path:

从系统导入路径 打印(repr(路径))

/Users/cameron/lib/python:/Users/cameron/rc/python

其中包含我的个人代码和交互式标签历史 python 使用.

基于您的文件树:

File Structure:

appName/
âââ bin/
âââ appName/
â   âââ __init__.py
â   âââ runner.py
â   âââ analysis/
â   â   âââ __init__.py
â   â   âââ run_perf.py
â   â   âââ mem_perf.py
â   âââ conversion/

[…]

您需要在 $PYTHONPATH 中包含 /path/to/appName/appName。

出于测试目的,手动执行此操作<示例:

导出 PYTHONPATH=/path/to/appName/appName

对于像上面这样的应用程序树,安装时,一个典型的 方法是让 appName/bin 中的可执行文件很小 包装脚本从它自己的路径中计算出来,设置 $PYTHONPATH,然后在您真正的 Python 主程序上执行 Python。要么 或者让安装过程连接所需的路径 进入包装器脚本以避免猜测。

干杯, 卡梅隆·辛普森 cs@cskk.id.au

https://discuss.python.org/t/calling-functions-from-packages/10107/2