安装的Python脚本无法导入软件包模块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了安装的Python脚本无法导入软件包模块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1846字,纯文字阅读大概需要3分钟。
内容图文
![安装的Python脚本无法导入软件包模块](/upload/InfoBanner/zyjiaocheng/679/d2f32f6fc8634e1d8ea7121f8c6402e5.jpg)
我创建了一个具有以下目录结构的Python包:
/
LICENSE
MANIFEST.IN
README.rst
VERSION
docs/
multitool/
__init__.py
core/
__init__.py
classes.py
utils.py
libs/
multitool.py
tests/
tools/
__init__.py
hashtool.py
webtool.py
setup.py
目标是创建一个命令行应用程序(multitool.py),第三方可以通过将其自己的文件添加到tools目录来添加到该命令行应用程序.这可以通过使它们成为我创建的类的子类来实现.例如,以下是hashtool.py的前几行:
import multitool
class HashTool(multitool.core.classes.CLITool):
只要我从项目目录本身运行它,所有这些方法都可以工作:
$./multitool.py -h <---works
$./multitool/multitool.py -h <---works
当我尝试创建并将其作为软件包安装时,问题就来了.安装将运行并安装脚本.但是,当您运行脚本时,它找不到包中的任何模块:
$multitool.py
import core
ImportError: No module named core
我尝试将导入更改为multitool,multitool.core,.multitool,.. multitool和其他具有相同结果的文件.
但是,我能够从Python解释器导入:
Type "help", "copyright", "credits" or "license" for more information.
>>> import multitool
>>> import multitool.core
>>> import multitool.core.classes
>>> from multitool import core
>>>
这是我的setup.py的相关部分
setup(
name = 'multitool',
version = __version__,
license = 'GPLv2',
packages = find_packages(exclude=['test/']),
scripts = ['multitool/multitool.py'],
include_package_data = True,
....
)
我究竟做错了什么?如何从与软件包一起安装的脚本中的tools目录中导入自己的代码和文件?
更新
MrAlias在下面的编辑评论有效.令人困惑的是,该脚本与程序包本身具有相同的名称,并且不在单独的目录中.将脚本移至其自己的bin /目录即可解决此问题.
解决方法:
首先,当您安装软件包时,您要导入的内核没有识别出它是否属于multitool软件包.所以:
import core
应该,
from multitool import core
这样,解释器就知道要从中导入核心的模块.
[编辑]
至于已安装软件包的目录结构,脚本需要进入与模块本身不同的目录.所示目录结构的方式是Distutils会将您命名的脚本安装到系统查找可执行文件的位置以及程序包本身中,这很可能会引起所有混乱.
内容总结
以上是互联网集市为您收集整理的安装的Python脚本无法导入软件包模块全部内容,希望文章能够帮你解决安装的Python脚本无法导入软件包模块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。