如何解决如何在 python 中的打包库中执行动态导入?
我正在编写一个可以打包并可以通过 Pypi 上的 pip 安装的库。我的 setup.py 中有几个脚本目标
"console_scripts": [
"mlab=install.make_lab:mlab","rlab=install.run_lab:rlab","clab=install.clear_lab:clab"
]
这些主要用作补充主库的程序员工具。
mlab
命令在用户项目中创建如下目录结构:
laboratory/
|- lab.py
|- labmain.py
在 labmain.py 中,我有一个 main()
函数。
import laboratory.lab as lab
def main():
print("I am the main!")
print(lab.name)
我想将此主要方法附加到我的 shell 命令中。
我已经试过了:
import os
def rlab():
"""
This shell command is used to run a lab.
"""
lab_dir_path = os.path.join(os.getcwd(),"laboratory")
if not os.path.isdir(lab_dir_path):
print("No lab exists... run the mlab command to make a lab.")
main = __import__("laboratory.labmain")
os.chdir("laboratory")
main.main()
以及使用 from laboratory import labmain
我继续得到 ModuleNotFoundError
。
需要注意的是,rlab
函数正在打包,然后通过 twine 上传到 testpypi。然后,我将在一个单独的项目中安装该包,该项目包含运行 mlab
shell 命令后的实验室结构。在打包之前,一切似乎都运行良好。
解决方法
你快到了。您必须完成函数参数的填写。您可能需要将 0
更改为 1
或 -1
labmain = __import__("laboratory.labmain",globals(),locals(),['main'],0)
labmain.main()
另外,请确保 laboratory
目录位于 sys.path
import sys
sys.path.append('z:/path/to/laboratory')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。