如何解决Python setuptools:打包根目录每个包不需要子目录
我需要将一个包写入存储库,但它是一个小型快速包,因此我认为不需要将文件放入子目录。我只想:
import mypkg.module1
有目录结构
root_folder/
- setup.py
- __init__.py # the init for package "mypkg" (empty)
- module1.py
root_folder/
- setup.py
- mypkg/ # WHY would I do that for 1 module??
- __init__.py
- module1.py
# Content of setup.py
from setuptools import setup
setup(name='MyPkg',packages=['mypkg']
package_dir={'mypkg': '.'})
但结果是 import mypkg
失败,import module1
工作,而不是所需的 import mypkg.module1
。
我找到了 this question,但“将 setup.py 向上移动一个文件夹”的答案不适合我。
在找到设置参数文档 here 后,我尝试定义一个命名空间包:
# Content of setup.py with a namespace package
from setuptools import setup
setup(name='MyPkg',packages=['thisdir']
package_dir={'thisdir': '.'},namespace_packages=['mypkg'])
解决方法
如果不进行测试,我认为这样的方法可能可行:
#!/usr/bin/env python3
import setuptools
setuptools.setup(
name='MyPkg',version='0.0.0.dev0',packages=['mypkg'],package_dir={
'mypkg': '.',},)
最大的问题是,据我所知,您最终会在包 setup.py
中得到 mypkg
,因此 import mypkg.setup
确实会导入 {{1 }} 模块。我没有验证。
另一个大问题是,与大多数 setup
修改一样,“开发/可编辑”安装很可能根本不起作用。
但结果是 package_dir
失败,import mypkg
有效,而不是所需的 import module1
如果项目没有实际安装,并且当前工作目录是项目的根目录,我可以想象这种情况会发生。
要使 import mypkg.module1
成功,您必须确保正确安装项目 (import mypkg
)。
如果 python -m pip install .
失败,您可能需要切换到其他目录。
相关:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。