python - 从内部包调用函数
问题描述
我通过分离不同的功能来组织我的项目,但不知道如何在我创建的部分之间进行通信。
我正在尝试通过包含此导入语句从run_perf.py
in访问函数addMetrics.py
from analysis import run_perf
...
runtime = run_perf.calcMs()
不断收到ModuleNotFoundError: No module named '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
文件现在也是空的)
解决方案
收到一条非常有用的消息,解决了这个问题!
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 无法处理“分析”包。Python 在 sys.path 中查找:
从系统导入路径打印(repr(路径))
/Users/cameron/lib/python:/Users/cameron/rc/python
其中包含我用于交互式 python 使用的个人代码和 tabhistory。
根据您的文件树:
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
推荐阅读
- sql - join时,在join子句和where子句中添加条件有区别吗
- css - React Native - 底部带有粘性按钮的 ScrollView
- amazon-web-services - AWS RDS:有没有办法确定数据库实例是否自动打开?
- bash - 如何解析文件并检索某些单词
- excel - VBA - 数据透视表的显示详细信息问题
- java - 在 Spy 对象上使用验证
- c# - 如何在 xNet c# 中设置自定义主机头
- angular - 如何避免在“ng-build”中将第三方库包含在“vendor.js”中?我想改用 CDN
- amazon-web-services - 在 ec2 中的 Spark 集群上运行 zipWithIndex() 失败并显示“网络无法访问”
- javascript - 页面完成加载后如何启用禁用的输入字段-Vuejs