【发布时间】:2020-09-03 16:49:16
【问题描述】:
项目结构
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__']
关于 SO 的类似问题
setup.py installed package can't be imported 提供的解决方案被证明不成功。
ImportError: cannot import name 'Serial' from 'serial' (unknown location) 在my_package/my_package 中添加__init__.py 文件无效。
Git 仓库
我已在GitLab 放置了一个问题示例
【问题讨论】:
-
要清楚,您是否尝试在
my_package/my_package中添加__init__.py?也许内容import .my_module? -
@GreenCloakGuy 是的。我已经更新了问题中的最后一个短语。
__init__.py被放置在my_package/my_package中。添加你刚才说的导入,也没有用。 -
您从哪个(目录)位置运行使用
from my_package import my_module的脚本(或Python提示符)? -
@00 检查gitlab.com/prodrigues1990/import-setup/-/jobs/718813294 看看它是否回答了您的问题
-
您也可以在
venv/lib/python3.8/site-packages/my_package中查看my_module.py是否存在。