Python setuptools:打包根目录(每个包不需要子目录)

Python setuptools:打包根目录(每个包不需要子目录),python,setuptools,python-packaging,Python,Setuptools,Python Packaging,我需要将一个包写入存储库,但它是一个小的快速包,因此我认为没有必要将文件放入子目录。我只想: 导入mypkg.module1 具有目录结构 root_folder/ - setup.py - __init__.py # the init for package "mypkg" (empty) - module1.py 我不想被限制在增加文件夹层次结构上,如下所示: root\u文件夹/ -setup.py -mypkg/#为什么我要为一个模块这么

我需要将一个包写入存储库,但它是一个小的快速包,因此我认为没有必要将文件放入子目录。我只想:

导入mypkg.module1
具有目录结构

root_folder/
    - setup.py
    - __init__.py  # the init for package "mypkg" (empty)
    - module1.py
我不想被限制在增加文件夹层次结构上,如下所示:

root\u文件夹/
-setup.py
-mypkg/#为什么我要为一个模块这么做??
-_uuuinit_uuuuu.py
-模块1.py
#setup.py的内容
从设置工具导入设置
安装程序(name='MyPkg',
软件包=['mypkg']
package_dir={'mypkg':'.'.})
但结果是,
import mypkg
失败,
import module1
工作,而不是所需的
import mypkg.module1

我找到了,但是“只需向上移动setup.py一个文件夹”的答案不适合我

找到设置参数文档后,我尝试定义一个名称空间包:

#带有名称空间包的setup.py的内容
从设置工具导入设置
安装程序(name='MyPkg',
packages=['thisdir']
package_dir={'thisdir':'.'.},
名称空间_packages=['mypkg'])

如果不进行测试,我认为类似的方法可能会奏效:

#/usr/bin/env蟒蛇3
导入设置工具
setuptools.setup(
name='MyPkg',
version='0.0.0.dev0',
软件包=['mypkg'],
包裹目录={
“mypkg”:“,
},
)
最大的问题是,据我记忆所及,您最终也会在包
mypkg
中找到
setup.py
,因此
import mypkg.setup
确实会导入
setup
模块。我还没有核实

另一个大问题是,与大多数
package\u dir
修改一样,“开发/编辑”安装很可能根本不起作用


但结果是,
import mypkg
失败,并且
import module1
工作,而不是所需的
import mypkg.module1

如果项目没有实际安装,并且当前工作目录是项目的根目录,我可以想象会发生这种情况

要想成功导入mypkg,您必须确保项目安装正确(
python-mpipinstall.

要使导入模块1失败,您可能需要更改到其他目录


相关的


也许这会让您走上正确的道路:--名称空间很可能不是您想要的。-不过,您可能对查看
py_模块
感兴趣。哦,在测试之前,我忘了转到另一个目录。。。我用来安装的命令是
python3 setup.py develope--user-N
。我来看看你的建议。关于导入安装程序的观点很好,谢谢。您确实应该使用
python-m pip安装--可编辑。
(而不是
setup.py develope
)。--而且,无论如何,这对可编辑/开发安装也不起作用,您可以忽略它。我在其中一个相关问题中对此进行了详细阐述。