【发布时间】:2023-12-04 18:49:01
【问题描述】:
我在 Ubuntu 18.04.3 上使用 python 3.6.8。 我有一个文件夹设置如下:
.
└── my_package
├── independent_modules1
├── independent_modules2
├── setup.py
└── src
├── sub_package1
├── module1
└── module2
my_package 是一个 git 存储库,这就是为什么要放置 Independent_modules 的原因。
/src 是“my_package”的所有模块所在的位置。
setup.py 有以下内容:
from setuptools import setup, find_packages
setup(
name="my_package",
version="1.0",
package_dir={'': 'src'},
packages=find_packages(where='src')
)
我创建了一个名为 my_env 的虚拟环境,用于项目。
在虚拟环境中,并且已经安装了所有需要的包,我尝试通过执行以下操作来安装我自己的包:
(my_env) my_user: ~/folder/my_package$ pip3 install -e .
pip 表示包安装成功,如果我运行 pip3 list,它会列出 my_package。
但是如果我运行 python3 并尝试导入 my_package 我得到 ModuleNotFoundError: No module named 'my_package'。
似乎是什么问题?
我之前尝试过这个,但是没有设置 src 文件夹(my_package 的模块都在 my_package 下,与 setup.py 一起)并且它成功了。
【问题讨论】:
-
你是通过终端安装的吗?如果是这样,请检查您使用哪个 Python 安装它。如果我没记错的话,Ubuntu 默认自带 Python2.7。安装 Python3 后,您可以
rmPython2.7。我以前在其他模块上遇到过这个问题,这为我解决了这个问题 -
安装脚本中
namearg 下的内容是您的发行版名称,用于安装您的项目。它是不可导入的。可导入的是packages列表的内容。在您的示例中,my_package用于 install 项目,例如通过pip install my_package,而您应该能够导入sub_package1、module1、module2等。 -
@hoefling 将您的评论作为答案,我能够在您的帮助下解决。我将
sub_package1、module1和module2放在my_package文件夹下src并解决了问题。
标签: python python-3.x pip setuptools