使用pip安装本地Python项目及自动发现子项目时遇错求助
问题原因与解决方案
错误原因
你设置packages=find_packages(where='mypkg')时,find_packages会在mypkg目录下搜索包,找到的是subpkg1、subpkg2这类子包。但setuptools会默认在项目根目录(setup.py所在的project_root_directory)下寻找这些包的目录,而非mypkg内部,所以才会报错error: package directory 'subpkg1' does not exist。
正确配置方法
要正确识别mypkg及其所有子包,有两种简单的配置方式:
方法一:直接使用默认的find_packages()
find_packages()默认会在setup.py所在的项目根目录下,搜索所有包含__init__.py的包,自动识别mypkg以及它的子包subpkg1、subpkg2。修改后的setup.py代码如下:
from setuptools import setup, find_packages setup( name="Code", author="Me", author_email="Me", description="Code", packages=find_packages(), python_requires='>=3.6', )
方法二:精确指定要包含的包前缀
如果需要更精准控制(比如只包含mypkg相关的包),可以用include参数匹配所有以mypkg开头的包:
from setuptools import setup, find_packages setup( name="Code", author="Me", author_email="Me", description="Code", packages=find_packages(where='.', include=['mypkg*']), python_requires='>=3.6', )
验证效果
配置完成后,运行pip install -e .,即可通过以下方式导入所有子包:
import mypkgimport mypkg.subpkg1import mypkg.subpkg1.module1
内容的提问来源于stack exchange,提问作者stillQuestioning
相关产品推荐
相关产品推荐

