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

项目结构

my_package

├── my_package

│   ├── __init__.py

│   └── my_module.py

└── setup.py

该模块my_module.py有一个func我试图导入的函数。


该setup.py文件具有以下内容。


from setuptools import setup, find_packages


setup(

    name='my_package',

    packages=find_packages(where='my_package'),

    version='1.0'

)

导入API

我正在安装该软件包:


virtualenv --python=/usr/bin/python3.8 venv

source venv/bin/activate

python my_package/setup.py install

然后使用以下命令导入它:


import my_package

from 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__']


MYYA
浏览 114回答 1
1回答

凤凰求蛊

您正在test.py目录的父目录中运行脚本my_package。因此,test.py将尝试将my_package子目录作为包/模块导入,而不是您安装的包。您将需要移动到不包含源代码的目录,然后运行测试。这可以像test在my_package主目录的子目录中运行它一样简单。只需确保您cd明确进入该目录,而不是使用完整路径运行它(例如,python3.8 my_package/test/test.py,因为那样它仍然会导入错误的my_package.其原因(也是问题的原因)是 Pythonsys.path在开始时自动将当前工作目录包含在 , 中,因此会尝试将主my_package目录作为包导入。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python