为了账号安全,请及时绑定邮箱和手机立即绑定

导入错误:无法导入名称(未知位置)

导入错误:无法导入名称(未知位置)

MYYA 2023-07-11 16:54:58
项目结构my_package├── my_package│   ├── __init__.py│   └── my_module.py└── setup.py该模块my_module.py有一个func我试图导入的函数。该setup.py文件具有以下内容。from setuptools import setup, find_packagessetup(    name='my_package',    packages=find_packages(where='my_package'),    version='1.0')导入API我正在安装该软件包:virtualenv --python=/usr/bin/python3.8 venvsource venv/bin/activatepython my_package/setup.py install然后使用以下命令导入它:import my_packagefrom my_package import my_module但是,第二次导入失败,并显示:ImportError: cannot import name 'my_module' from 'my_package' (unknown location)此外,运行dir(my_package)显示该my_module名称确实没有被导入。 ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您正在test.py目录的父目录中运行脚本my_package。因此,test.py将尝试将my_package子目录作为包/模块导入,而不是您安装的包。您将需要移动到不包含源代码的目录,然后运行测试。这可以像testmy_package主目录的子目录中运行它一样简单。
只需确保您cd明确进入该目录,而不是使用完整路径运行它(例如,python3.8 my_package/test/test.py,因为那样它仍然会导入错误的my_package.

其原因(也是问题的原因)是 Pythonsys.path在开始时自动将当前工作目录包含在 , 中,因此会尝试将主my_package目录作为包导入。


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信